Yahoo Sherpa
Encyclopedia
Sherpa is Yahoo's next-generation cloud storage platform. It is a hosted, distributed and geographically replicated key-value datastore. It is a NoSQL solution that has been developed by Yahoo, to address scalability, availability and latency needs of Yahoo! websites. Sherpa has capabilities such as elastic growth, multi-tenancy, global footprint for local low-latency access, asynchronous replication, REST-based web service APIs, novel per-record consistency knobs, high availability, compression, secondary indexes, and record level replication.

Architecture

Sherpa is a multi-tenant system. An application can store data in a table, which is a collection of records. A table is sharded into smaller pieces called tablets. Data is sharded based on the hash value of the key, or range partitioned. Tablets are stored on nodes referred to as storage units. A software routing layer keeps track of mapping between applications tablets and storage units. Applications send requests to the router, which forwards them to the correct storage unit based on the tablet map. Clients can get/set/delete, and scan records via unique record primary keys.

Data model

Sherpa's data model is a key-value store where data is stored as JSON blobs. Data is organized in tables where primary key uniqueness can be enforced, but other than that, there are no fixed schemas. It supports single-table scans with predicates. Customers can choose a variety of table types: Distributed Hash Table, Distributed Ordered Table, Mastered and Merging Tables. Application-specific access patterns determine the suitability of each table type. Query patterns affect key definition.

Scalability

Sherpa scales by partitioning data. In Sherpa, data partitions are called tablets. Each customer-defined table is partitioned into tablets. Therefore, tablets are both units of work assignment and tenancy. Each tablet contains a range of records. Sherpa can scale to very large numbers of tables, tablets and records.

Elasticity

The system scales horizontally as newer machines are added, with no downtime to applications. Other elasticity operations include data partition assignment, reassignment and splitting.

Fault-tolerance

Data is automatically replicated to multiple nodes for fault-tolerance. Replication
Replication (computer science)
Replication is the process of sharing information so as to ensure consistency between redundant resources, such as software or hardware components, to improve reliability, fault-tolerance, or accessibility. It could be data replication if the same data is stored on multiple storage devices, or...

 across multiple data centers is supported. Single-node failure is transparent to the applications. Sherpa relied on a reliable transaction message bus for replicating transactions. This message bus guarantees at-least-once delivery of transaction messages.

Tunable consistency

Sherpa supports different levels of consistency, ranging from per-record timeline consistency where all writes are serialized to a master copy, to eventual consistency
Eventual consistency
Eventual consistency is one of the consistency models used in the domain of parallel programming, for example in distributed shared memory, distributed transactions, and optimistic replication, it means that given a sufficiently long period of time over which no changes are sent, all updates can be...

.

Selective record replication

Replication granularity is at the record level, as well as table level.

Backup

The Backup feature allows for multiple old copies of the full table to be saved in off-line storage. From this off-line storage, customers may retrieve old versions of individual records.

Secondary indexes

Many applications need to access data via non-primary key data fields. The next release of Sherpa is going to support asynchronous secondary indexes.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK