Pinterest Engineering

Building Pinterest’s new wide column database using RocksDB

thumbnail
  • Pinterest built a wide column database using RocksDB to migrate use cases from UserMetaStore.
  • The data model consists of items, which have a column name and a list of cells.
  • Cells contain a timestamp and column value.
  • The underlying storage engine is RocksDB, using a simple key-value structure.
  • The storage model concatenates the row key, column name, and timestamp to create the RocksDB key.
  • The database supports APIs for getting rows, specifying row key, column names, and number of versions.
  • Versioned values allow for storing multiple versions of data for the same key and column.
  • Support for pagination allows for retrieving a limited number of columns at a time.
  • The database also supports a Time to Live (TTL) feature, where expired values are physically deleted.