Google hangi veritabanını kullanıyor?


370

Oracle mı yoksa MySQL mi, yoksa kendi inşa ettikleri bir şey mi?


187
Veri tabanı yığını taşmasının ne kullandığını öğrenmek istediğinde Google'ı kullanacak
flybywire

340
Hey, ona bash yapma, ben bir google arama lol burada sona erdi.
Shawn Mclean

141
Google'da "Google'ın Veritabanı" nı aramanın en iyi sonucunun artık Google'ın ilk yorumu olduğu bu sayfa olması ironik midir?
Patrick Szalapski

89
@ Patrick Szalapski bir yığın taşması durumu gibi geliyor.
Thomas

5
Aramadan önce Google bana doğru cevabı verip vermeyeceğini merak ediyordum ama işte başlıyoruz: P
Abdul Saboor

Yanıtlar:


581

Buyuk masa

Yapısal Veriler için Dağıtılmış Depolama Sistemi

Bigtable, çok büyük bir boyuta ölçeklenmek üzere tasarlanmış yapılandırılmış verileri yönetmek için dağıtılmış bir depolama sistemidir (Google tarafından oluşturulmuştur): binlerce emtia sunucusundaki petabayt veri.

Google'daki birçok proje, web dizini oluşturma, Google Earth ve Google Finans dahil olmak üzere verileri Bigtable'da depolar. Bu uygulamalar, hem veri boyutu (URL'lerden web sayfalarına uydu görüntülerine kadar) hem de gecikme gereksinimleri (arka uç toplu işlemeden gerçek zamanlı veri sunumuna) açısından Bigtable'a çok farklı talepler getiriyor.

Bu çeşitli taleplere rağmen, Bigtable tüm bu Google ürünleri için başarılı bir şekilde esnek ve yüksek performanslı bir çözüm sağlamıştır.

Bazı özellikler

  • hızlı ve son derece büyük ölçekli DBMS
  • hem sıra hem de sütun yönelimli veritabanlarının özelliklerini paylaşan seyrek, dağıtılmış çok boyutlu sıralanmış bir harita.
  • petabayt aralığına ölçeklendirmek için tasarlanmıştır
  • yüzlerce veya binlerce makinede çalışır
  • sisteme daha fazla makine eklemek kolaydır ve yeniden yapılandırılmadan otomatik olarak bu kaynaklardan yararlanmaya başlar
  • her tablonun birden fazla boyutu vardır (bunlardan biri zaman için alan, sürüm oluşturmaya izin verir)
  • tablolar birden çok tablete bölünerek GFS (Google Dosya Sistemi) için optimize edilmiştir - tablonun bölümleri, tabletin boyutu yaklaşık 200 megabayt olacak şekilde seçilen bir satır boyunca bölünür.

Mimari

BigTable ilişkisel bir veritabanı değildir. Birleştirmeleri veya zengin SQL benzeri sorguları desteklemez. Her tablo çok boyutlu seyrek bir haritadır. Tablolar satır ve sütunlardan oluşur ve her hücrenin bir zaman damgası vardır. Farklı zaman damgalarına sahip bir hücrenin birden fazla sürümü olabilir. Zaman damgası, "bu Web sayfasının 'n' sürümlerini seçin" veya "belirli bir tarih / saatten daha eski hücreleri sil" gibi işlemlere izin verir.

Büyük tabloları yönetmek için Bigtable tabloları satır sınırlarına böler ve tablet olarak kaydeder. Bir tablet yaklaşık 200 MB'dir ve her makine yaklaşık 100 tablet kaydeder. Bu kurulum, tek bir tablodaki tabletlerin birçok sunucu arasında yayılmasını sağlar. Aynı zamanda ince taneli yük dengelemesine de izin verir. Bir tablo çok fazla sorgu alıyorsa, diğer tabletleri tutabilir veya meşgul tablosunu o kadar meşgul olmayan başka bir makineye taşıyabilir. Ayrıca, bir makine kapanırsa, bir tablet diğer birçok sunucuya dağıtılabilir, böylece belirli bir makine üzerindeki performans etkisi minimum olur.

Tablolar değişmez SSTables ve kütük kuyruğu (makine başına bir kütük) olarak saklanır. Bir makinenin sistem belleği bittiğinde, Google'a özel sıkıştırma teknikleri (BMDiff ve Zippy) kullanarak bazı tabletleri sıkıştırır. Küçük işlemler yalnızca birkaç tablet içerirken, büyük işlemler tüm tablo sistemini içerir ve sabit disk alanını kurtarır.

Bigtable tabletlerinin yerleri hücrelerde saklanır. Herhangi bir tabletin aranması üç katmanlı bir sistem tarafından gerçekleştirilir. Müşteriler sadece bir tane olan bir META0 tablosuna işaret ederler. META0 tablosu, aranan tabletlerin yerlerini içeren birçok META1 tabletini takip eder. Hem META0 hem de META1, sistemdeki darboğazları en aza indirmek için ön getirme ve önbelleğe alma işlemlerinden yoğun şekilde yararlanır.

uygulama

BigTable, günlük ve veri dosyaları için bir destek deposu olarak kullanılan Google Dosya Sistemi (GFS) üzerine kurulmuştur . GFS, tablo verilerini sürdürmek için kullanılan Google'a özel bir dosya biçimi olan SSTables için güvenilir depolama alanı sağlar.

BigTable'ın yoğun şekilde kullandığı bir diğer hizmet de , yüksek oranda erişilebilir, güvenilir dağıtılmış bir kilit hizmeti olan Chubby'dir . Chubby, istemcilerin bir kilit almasına izin verir, muhtemelen bazı meta verilerle ilişkilendirir ve canlı mesajlarını Chubby'ye geri göndererek yenileyebilir. Kilitler, dosya sistemi benzeri bir hiyerarşik adlandırma yapısında saklanır.

Bigtable sisteminde üç ana sunucu türü vardır :

  1. Ana sunucular: tabletleri tablet sunucularına atayın, tabletlerin nerede bulunduğunu izler ve görevleri gerektiği gibi yeniden dağıtır.
  2. Tablet sunucuları: boyut sınırlarını (genellikle 100 MB - 200 MB) aştıklarında tabletler ve bölünmüş tabletler için okuma / yazma isteklerini işleme. Bir tablet sunucusu arızalanırsa, her biri 1 yeni tablet toplayan 100 tablet sunucusu ve sistem kurtarır.
  3. Kilit sunucuları: Chubby dağıtılmış kilit hizmetinin örnekleri. BigTable'daki birçok eylem, yazma için tabletleri açmak, aynı anda birden fazla etkin Ana öğenin olmamasını ve erişim kontrolü denetimini de içeren kilitlerin edinilmesini gerektirir.

Google'ın araştırma belgesinden bir örnek:

alternatif metin

Web sayfalarını depolayan örnek bir tablonun bir dilimi. Satır adı, tersine çevrilmiş bir URL'dir . İçindekiler sütun ailesi sayfa içeriğini içerir ve tutturucu sütun ailesi , sayfaya başvuran tüm tutturucuların metnini içerir . CNN'in ana sayfasına hem Sports Illustrated hem de MY-look ana sayfaları referans verir, bu nedenle satır anchor:cnnsi.comve adında sütunlar içerir anchor:my.look.ca. Her çapa hücresinin bir sürümü vardır ; içindekiler sütun vardır üç versiyonu damgaları de t3, t5ve t6.

API

BigTable'a tipik işlemler, tablo ve sütun ailelerinin oluşturulması ve silinmesi, veri yazılması ve bir satırdan sütunların silinmesidir. BigTable bu işlevleri bir API'deki uygulama geliştiricilerine sağlar. İşlemler satır düzeyinde desteklenir, ancak birkaç satır tuşunda desteklenmez.


İşte araştırma belgesinin PDF'sine link .

Burada , Washington Üniversitesi'ndeki bir konferansta Google'ın Jeff Dean'ini gösteren ve Google'ın arka ucunda kullanılan Bigtable içerik depolama sistemini tartışan bir video bulabilirsiniz .


4
Herkes sıfırdan yapılmış mı yoksa bazı ürünlere dayalı mı biliyor mu? Nerede olduğunu hatırlamadığım bir yerde, Google'ın bir kez Oracle kullandığını duydum, ancak bıraktılar çünkü Oracle'ın yapmayacağı veya yapmasına izin vermeyecek bazı değişikliklere ihtiyaçları var. Bağlantıyı almaya çalışacağım.
OscarRyz

5
Diğer temel yetkinliklerinin çoğu (web sunucusu, GFS, ...) gibi sıfırdan.
Matt J

5
Sıkıştırma algoritmaları (BMDiff ve Zippy) hakkında bilgi arıyordum ve şimdi Zippy'nin Snappy olarak adlandırıldığını ve Google Code'da yayınlandığını buldum: code.google.com/p/snappy
helios

7
Şimdi BigTable'ın halefi Spanner'ı kullanıyorlar
deltonio2

Yani, Mongodb veya Marklogic gibi nosql veritabanına benzer.
stuckedoverflow


32

Spanner , Google'ın BigTable'ın halefi olan global olarak dağıtılmış ilişkisel veritabanı yönetim sistemidir (RDBMS) . Google, her tablonun birincil bir anahtarı olması gerektiğinden bunun saf bir ilişkisel sistem olmadığını iddia ediyor.

İşte makalenin linki.

Spanner, Google'ın ölçeklenebilir, çok sürümlü, global olarak dağıtılmış ve senkronize olarak çoğaltılmış veritabanıdır. Verileri küresel ölçekte dağıtan ve harici olarak tutarlı dağıtılmış işlemleri destekleyen ilk sistemdir. Bu makale Spanner'ın nasıl yapılandırıldığını, özellik setini, çeşitli tasarım kararlarının altında yatan mantığı ve saat belirsizliğini ortaya çıkaran yeni bir zaman API'sini açıklamaktadır. Bu API ve uygulaması, dış tutarlılığı ve çeşitli güçlü özellikleri desteklemek için kritik öneme sahiptir: geçmişte engellemeyen okumalar, kilitsiz salt okunur işlemler ve tüm Spanner'da atom şeması değişiklikleri.

Google tarafından icat edilen bir başka veritabanı Megastore . İşte özet:

Megastore, günümüzün etkileşimli çevrimiçi hizmetlerinin gereksinimlerini karşılamak için geliştirilmiş bir depolama sistemidir. Megastore, NoSQL veri deposunun ölçeklenebilirliğini geleneksel bir RDBMS'nin rahatlığıyla yeni bir şekilde harmanlıyor ve hem güçlü tutarlılık garantileri hem de yüksek kullanılabilirlik sağlıyor. Verilerin ayrıntılı bölümleri içinde tamamen serileştirilebilir ACID semantiği sağlıyoruz. Bu bölümleme, her bir yazmayı geniş bir alan ağı üzerinden makul bir gecikme ile senkronize olarak çoğaltmamıza ve veri merkezleri arasında kesintisiz yük devretmeyi desteklememize olanak tanır. Bu makalede Megastore'un anlambilimi ve çoğaltma algoritması açıklanmaktadır. Ayrıca, Megastore ile oluşturulmuş çok çeşitli Google üretim hizmetlerini destekleme deneyimimizi de açıklamaktadır.


Spanner'ın kapalı kaynaklı bir proje olması çok yazık. Açıklamaya göre, bunu projelerim için de kullanmak isterim.
Mikko Rantalainen

2
@MikkoRantalainen Apache Hadoop ekosistemini veya CockroachDB'yi kontrol etmek isteyebilirsiniz (Hamamböceği alfa olsa da)
ikiye katlandı

Teşekkürler, CockroachDB ilginç görünüyor. Ne tür bir performansa sahip olduğunu görmek için test etmeliyim. Özellikler sahip olmak istiyorum şeyler gibi görünüyor.
Mikko Rantalainen

1
Spanner, herkesin 2017'den beri Google Cloud'da kullanmasına izin
veriyor

19

Diğerlerinin de belirttiği gibi Google, BigTable adlı kendi geliştirdiği bir çözümü kullanıyor ve bunu gerçek dünyaya açıklayan birkaç makale yayınladılar.

Apache halkı, HBase adı verilen bu makalelerde sunulan fikirlerin bir uygulamasına sahiptir . HBase, sitelerine göre "çok miktarda veri işleyen uygulamaları kolayca yazıp çalıştırabilmenizi sağlayan bir yazılım platformudur." Adlı daha büyük Hadoop projesinin bir parçasıdır . Testlerden bazıları oldukça etkileyici. Siteleri http://hadoop.apache.org adresindedir .


Bağlantı 404 bulunamadı
Shivam Jha


9

Ve BigTable'ın ilişkisel bir veritabanı (MySQL gibi) değil , çok farklı özelliklere sahip büyük (dağıtılmış) bir karma tablo olduğunu bilmek de kullanışlı olabilir . BigTable ile (sınırlı bir sürüm) Google AppEngine platformunda kendiniz oynayabilirsiniz .

Yukarıda belirtilen Hadoop'un yanında, BigTable ile aynı sorunları (ölçeklenebilirlik, kullanılabilirlik) çözmeye çalışan başka birçok uygulama var. Dün burada güzel bir blog yazısı gördüm .


6

Google öncelikle Bigtable kullanıyor.

Bigtable, çok büyük bir boyuta ölçeklendirilmek üzere tasarlanmış yapılandırılmış verileri yönetmek için dağıtılmış bir depolama sistemidir.

Daha fazla bilgi için belgeyi buradan indirin .

Google ayrıca bazı uygulamaları için Oracle ve MySQL veritabanlarını kullanır.

Ekleyebileceğiniz daha fazla bilgi çok takdir edilmektedir.


17
Google also use Oracle- referans gerekli.
kullanıcı

@ kullanıcı cloud.google.com/sql/docs ? Geliştiriciler MySQL kullanabiliyorsa, Google en azından MySQL ve Bigtable ile bir "veritabanı çevirmeni" oluşturmuş olmalıdır.

1

Google hizmetleri çok dilli bir kalıcılık mimarisine sahiptir. BigTable, YouTube, Google Arama, Google Analytics vb. Hizmetlerinin çoğundan yararlanır. Arama hizmeti başlangıçta MapReduce'u dizin oluşturma altyapısı için kullandı, ancak daha sonra Kafein sürümü sırasında BigTable'a geçti.

Google Cloud veri mağazasında, hem dahili hem de harici kullanıcılarla karşılaşan Google'da 100'den fazla üretim uygulaması vardır. Gmail, Picasa, Google Takvim, Android Market ve AppEngine gibi uygulamalar Cloud Datastore & Megastore'u kullanıyor.

Google Arama Trendleri akış işleme için MillWheel kullanır. Google Ads başlangıçta MySQL kullandı, daha sonra özel bir yazılı dağıtılmış ilişkisel veritabanı olan F1 DB'ye geçti. Youtube Vitess ile MySQL kullanıyor. Google, Google Dosya Sistemi'nin yardımıyla emtia sunucularında fazladan veri depolar.

Kaynak: Google Veritabanları: Google Hizmetleri Petabyte-Exabyte Ölçek Verilerini Nasıl Depolar?

YouTube Veritabanı - Depolama Alanı Bitmeden Nasıl Bu Kadar Çok Video Saklar?

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.