SenseiDB

SenseiDB is a distributed database that supports the backend of LinkedIn homepage and LinkedIn Signal. The data is protected by replication and eventual consistency is guaranteed. Driven by a large number of search tasks, SenseiDB is also a efficient search engine on structured metadata and unstructured contents.

History

SenseiDB was initially developed and employed by LinkedIn team in 2012. It was then contributed by a number of engineers across different companies and continents. After three releases, SenseiDB has no longer updated since year 2013.

Joins

Not Supported

Joins are not supported in SenseiDB since it is not a strictly relational database.

Isolation Levels

Read Uncommitted

The users are responsible for guaranteeing data isolation.

Query Interface

Custom API

Browsing Query Language (BQL) is supported by SenseiDB, which has the similar syntax to SQL.

Concurrency Control

Not Supported

SenseiDB partitions its data within the system to improve processing speed, but it only accepts a single data stream at a time.

Stored Procedures

Not Supported

Indexes

Hash Table

SenseiDB applies an indexing manager called Zoie, which is a real-time search and indexing system. The biggest feature of Zoie is the support for real-time updates while preserving the high-efficiency.

Data Model

Column Family / Wide-Column

A SenseiDB instance is a table of data that is organized into columns. Each column may fall into one of the supported types: string, int, long, short, float, double, char, date, text.

Storage Architecture

Disk-oriented

Data is replicated in multiple disks to be robust against failures.

System Architecture

Shared-Disk

The entire database is partitioned into a number of shards. Each shard is replicated across N nodes so that there might be more than one shards in a single node. Below is an example of a Sensei cluster.