Bigtable
{{Short description|Cloud-based NoSQL database service}}
{{Use dmy dates|date=November 2013}}
{{Infobox software
| name = Google Bigtable
| title = Google Bigtable
| developer = Google
| logo =
| logo caption = Logo of Google Bigtable
| platform = Google Cloud Platform
| programming language = {{flatlist|C++ (core), Java, Python, Go, Ruby}}
| released = {{start date and age|2005|2}}
| latest release version =
| latest preview date =
| genre = Cloud Storage
| license = Proprietary
| website = {{URL|https://cloud.google.com/bigtable/}}
}}
Bigtable is a fully managed wide-column and key-value NoSQL database service for large analytical and operational workloads as part of the Google Cloud portfolio.
History
Bigtable development began in 2004.{{citation |quote=First an overview. Bigtable has been in development since early 2004 and has been in active use for about eight months (about February 2005). |first=Andrew |last=Hitchcock |url=https://andrewhitchcock.org/2005/bigtable.html |title=Google's Bigtable |access-date=29 July 2007}}. It is now used by a number of Google applications, such as Google Analytics,{{cite web |date=May 6, 2015 |title=Announcing Google Cloud Bigtable: The same database that powers Google Search, Gmail and Analytics is now available on Google Cloud Platform |url=http://googlecloudplatform.blogspot.com/2015/05/introducing-Google-Cloud-Bigtable.html |access-date=September 21, 2016 |work=Google Blog}} web indexing,{{Sfn |Chang |Dean |Ghemawat |Hsieh |2006}} MapReduce, which is often used for generating and modifying data stored in Bigtable,{{Sfn |Chang |Dean |Ghemawat |Hsieh |2006 |ps=: 'Bigtable can be used with MapReduce, a framework for running large-scale parallel computations developed at Google. We have written a set of wrappers that allow a Bigtable to be used both as an input source and as an output target for MapReduce jobs' |p=3}} Google Maps,{{citation |quote=There are currently around 100 cells for services such as Print, Search History, Maps, and Orkut |url=https://andrewhitchcock.org/2005/bigtable.html |title=Google's Bigtable |first=Andrew |last=Hitchcock |access-date=29 July 2007}}. Google Books search, "My Search History", Google Earth, Blogger.com, Google Code hosting, YouTube,{{citation |quote=Their new solution for thumbnails is to use Google's Bigtable, which provides high performance for a large number of rows, fault tolerance, caching, etc. This is a nice (and rare?) example of actual synergy in an acquisition. |url=https://kylecordes.com/2007/youtube-scalability |title=YouTube Scalability |format=talk |date=2007-07-12 |first=Kyle |last=Cordes}}. and Gmail.{{citation |url=https://code.google.com/intl/pl/appengine/articles/storage_breakdown.html#anc-background |contribution=How Entities and Indexes are Stored |title=Google App Engine |publisher=Google Code |access-date=17 April 2014 |archive-date=7 January 2012 |archive-url=https://web.archive.org/web/20120107215117/http://code.google.com/intl/pl/appengine/articles/storage_breakdown.html#anc-background |url-status=dead }}. Google's reasons for developing its own database include scalability and better control of performance characteristics.{{Sfn |Chang |Dean |Ghemawat |Hsieh |2006 |loc=Conclusion |ps=: 'We have described Bigtable, a distributed system for storing structured data at Google... Our users like the performance and high availability provided by the Bigtable implementation, and that they can scale the capacity of their clusters by simply adding more machines to the system as their resource demands change over time... Finally, we have found that there are significant advantages to building our own storage solution at Google. We have gotten a substantial amount of flexibility from designing our own data model for Bigtable.'}}
Apache HBase and Cassandra are some of the best known open source projects that were modeled after Bigtable. Bigtable offers [https://cloud.google.com/bigtable/docs/hbase-bigtable HBase] and [https://cloud.google.com/bigtable/docs/migrate-from-cassandra Cassandra compatible APIs].
On May 6, 2015, a public version of Bigtable was made available as a part of Google Cloud under the name Cloud Bigtable.
As of April 2024, Bigtable manages over 10 Exabytes of data and serves more than 7 billion requests per second.{{cite web | url=https://cloud.google.com/blog/products/databases/bigtable-enhancements-at-next24 | title=Celebrating 20 years of Bigtable with exciting announcements at Next }} Since its launch, Google announced a number of updates to Bigtable, including [https://cloud.google.com/bigtable/docs/googlesql-overview SQL support], [https://cloud.google.com/bigtable/docs/continuous-materialized-views materialized views] (which addresses secondary index use cases) and automated scalability.{{Cite web |last=Kerner |first=Sean Michael |date=2022-01-27 |title=Google scales up Cloud Bigtable NoSQL database |url=https://www.techtarget.com/searchdatamanagement/news/252512583/Google-scales-up-Cloud-Bigtable-NoSQL-database |access-date=2022-10-10 |website=TechTarget |language=en}}
Design
Bigtable is one of the prototypical examples of a wide-column store. It maps two arbitrary string values (row key and column key) and timestamp (hence three-dimensional mapping) into an associated arbitrary byte array. It is not a relational database and can be better defined as a sparse, distributed multi-dimensional sorted map.{{Sfn |Chang |Dean |Ghemawat |Hsieh |2006}}{{Rp|1}} It is built on Colossus (Google File System), Chubby Lock Service, SSTable (log-structured storage like LevelDB) and a few other Google technologies. Bigtable is designed to scale into the petabyte range across "hundreds or thousands of machines, and to make it easy to add more machines [to] the system and automatically start taking advantage of those resources without any reconfiguration".{{citation |url=http://radar.oreilly.com/2006/05/database-war-stories-7-google.html |series=Database War Stories |number=7 |contribution=Google File System and Bigtable |publisher=O'Reilly |title=Radar |date=May 2006 |format=World Wide Web log}}. For example, Google's copy of the web can be stored in a bigtable where the row key is a domain-reversed URL, and columns describe various properties of a web page, with one particular column holding the page itself. The page column can have several timestamped versions describing different copies of the web page timestamped by when they were fetched. Each cell of a bigtable can have zero or more timestamped versions of the data. Another function of the timestamp is to allow for both versioning and garbage collection of expired data.
Tables are split into multiple tablets – segments of the table are split at certain row keys so that each tablet is a few hundred megabytes or a few gigabytes in size. A bigtable is somewhat like a mapreduce worker pool in that thousands to hundreds of thousands of tablet shards may be served by hundreds to thousands of BigTable servers. When Table size threaten to grow beyond a specified limit, the tablets may be compressed using the algorithm BMDiff{{cite web |url=http://feedblog.org/2008/10/12/google-bigtable-compression-zippy-and-bmdiff |title=Google Bigtable, Compression, Zippy and BMDiff |date=2008-10-12 |access-date=14 April 2015 |url-status=dead |archive-url=https://web.archive.org/web/20130501020631/http://feedblog.org/2008/10/12/google-bigtable-compression-zippy-and-bmdiff/ |archive-date=1 May 2013}}.{{cite conference |title=Data compression using long common strings |last1=Bentley |first1=Jon |last2=McIlroy |first2=Douglas |conference=DCC '99: Proceedings of the Conference on Data Compression |year=1999 |publisher=IEEE Computer Society |doi=10.1109/DCC.1999.755678|citeseerx=10.1.1.11.8470 }} and the Zippy compression algorithm{{citation |url=http://blogoscoped.com/archive/2005-10-23-n61.html |contribution=Google's Bigtable |title=Outer court |format=Weblog |date=2005-10-23}}. publicly known and open-sourced as Snappy,{{citation |url=http://google.github.io/snappy/ |title=Snappy |format=project }}. which is a less space-optimal variation of LZ77 but more efficient in terms of computing time. The locations in the GFS of tablets are recorded as database entries in multiple special tablets, which are called "META1" tablets. META1 tablets are found by querying the single "META0" tablet, which typically resides on a server of its own since it is often queried by clients as to the location of the "META1" tablet which itself has the answer to the question of where the actual data is located. Like GFS's master server, the META0 server is not generally a bottleneck since the processor time and bandwidth necessary to discover and transmit META1 locations is minimal and clients aggressively cache locations to minimize queries.
References
{{Reflist}}
Bibliography
- {{cite conference |first1=Fay |last1=Chang |first2=Jeffrey |last2=Dean |first3=Sanjay |last3=Ghemawat |first4=Wilson C. |last4=Hsieh |first5=Deborah A. |last5=Wallach |first6=Mike |last6=Burrows |first7=Tushar |last7=Chandra |first8=Andrew |last8=Fikes |first9=Robert E. |last9=Gruber |conference=7th USENIX Symposium on Operating Systems Design and Implementation (OSDI'06)|year= 2006|location=Seattle, WA| title=Bigtable: A Distributed Storage System for Structured Data |url=http://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf}}
External links
- {{citation |url=http://www.cs.washington.edu/htbin-post/mvis/mvis?ID=437 |title=Bigtable: A Distributed Structured Storage System |publisher=Washington}}. {{citation |url=http://video.google.com/videoplay?docid=7278544055668715642 |title=Video |ref=none |access-date=11 July 2006 |archive-date=18 April 2011 |archive-url=https://web.archive.org/web/20110418072707/http://video.google.com/videoplay?docid=7278544055668715642 |url-status=dead }}.
- {{citation |url=http://www.uwtv.org/programs/displayevent.asp?rid=2787 |title=UWTV |format=video |url-status=dead |archive-url=https://web.archive.org/web/20060615164406/http://www.uwtv.org/programs/displayevent.asp?rid=2787 |archive-date=15 June 2006 |df=dmy-all |ref=none}}.
- {{citation |url=https://andrewhitchcock.org/2005/bigtable.html |title=Google's Bigtable |format=notes on the official presentation |first=Andrew |last=Hitchcock |ref=none |access-date=29 July 2007}}.
- {{citation |last=Carr |first=David F |date=2006-07-06 |url=https://www.baselinemag.com/c/a/Infrastructure/How-Google-Works-1 |title=How Google Works |newspaper=Baseline |ref=none}}.
- {{citation |url=https://readwrite.com/2009/02/12/is-the-relational-database-doomed/ |title=Read-write web |date=12 February 2009 |contribution=Is the Relational Database Doomed? |ref=none}}.
{{Google LLC}}
Category:Database management systems