Bigtable is a distributed database system, designed to scale to a very large size(petabytes) across thousands of servers. It is owned by Google and used on some of their applications(more than sixty) such as Google Maps, Google Earth, Gmail and so on.
It's closed source, although Google offers access to it as part of its Google App Engine. Since his deployment(late 2003) Bigtable has achived serveral goals: wide applicability, scalability, high performance, and high availability.
Each table on this system is a sparse, distributed, multi-dimensional map where data is organized into three dimensions: rows, columns and timestamps.
(row:string, column:string, time:int64) → string
In order to optimize the managing of a huge amount of data, the tables are split at row boundaries and stored as tablets. Each tablet hold contiguous rows and have between 100-200 MB distributed on several machines.
Each machine stores about 100 tablets(in GFS), this setup allowing good load balancing and fast recovery(if a system goes down, other machines take one tablet, so the load on each is fairly small).
- Minor Compaction - creates new SSTables - who has two goals: to reduce memory usage and reduce the amount of data that has to be read during recovery if the server dies.
- Merging Compaction, periodically executed in the background, reads the contents of a few SSTables and writes out a new SSTable.
- Major Compaction rewrites all SSTables into exactly one.
More details about the implementation, data model and Google infrastructure on which Bigtable depends you can find on this lecture from University of Washington or on this paper.
Ion, very good. One comment: try to ask more focused questions. The task in the last paragraph is correct but it will take us quite some time to answer it. I'd like to see questions, which can be answered in one week. Respectively I'd like to see the answers in the next blog. Slicing the problem to smaller tasks keeps us to stay focused and we will gain the feeling of making progress. Thanks for good job, Jan
ReplyDelete