Basis data apa yang digunakan Google?

370

Apakah itu Oracle atau MySQL atau sesuatu yang telah mereka bangun sendiri?

solrevdev
sumber
187
Dia akan menggunakan Google ketika dia ingin mengetahui apa yang menggunakan stack overflow database
flybywire
340
Hei, jangan bash padanya, aku berakhir di sini dari pencarian lol google.
Shawn Mclean
141
Apakah lebih jauh ironi bahwa hasil teratas untuk mencari "Database Google" di Google sekarang adalah halaman ini, di mana komentar pertama adalah menggunakan Google?
Patrick Szalapski
89
@ Patrick Szalapski terdengar seperti situasi stack overflow.
Thomas
5
Sebelum mencari saya bertanya-tanya apakah Google akan memberi saya jawaban yang benar tetapi di sini kita pergi: P
Abdul Saboor

Jawaban:

581

Meja besar

Sistem Penyimpanan Terdistribusi untuk Data Terstruktur

Bigtable adalah sistem penyimpanan terdistribusi (dibangun oleh Google) untuk mengelola data terstruktur yang dirancang untuk skala ke ukuran yang sangat besar: petabyte data di ribuan server komoditas.

Banyak proyek di Google menyimpan data di Bigtable, termasuk pengindeksan web, Google Earth, dan Google Finance. Aplikasi ini menempatkan tuntutan yang sangat berbeda pada Bigtable, baik dalam hal ukuran data (dari URL ke halaman web ke citra satelit) dan persyaratan latensi (dari pemrosesan massal backend ke penyajian data waktu-nyata).

Terlepas dari berbagai tuntutan ini, Bigtable telah berhasil memberikan solusi fleksibel dan berkinerja tinggi untuk semua produk Google ini.

Beberapa fitur

  • DBMS yang cepat dan sangat besar
  • peta tersortir multi-dimensi yang jarang dan terdistribusi, berbagi karakteristik dari database berorientasi baris dan berorientasi kolom.
  • dirancang untuk skala ke kisaran petabyte
  • ini bekerja di ratusan atau ribuan mesin
  • mudah untuk menambahkan lebih banyak mesin ke sistem dan secara otomatis mulai mengambil keuntungan dari sumber daya tersebut tanpa konfigurasi ulang
  • setiap tabel memiliki beberapa dimensi (salah satunya adalah bidang waktu, memungkinkan versi)
  • tabel dioptimalkan untuk GFS (Google File System) dengan dipecah menjadi beberapa tablet - segmen tabel dibagi menjadi satu baris yang dipilih sehingga tablet akan berukuran ~ 200 megabyte.

Arsitektur

BigTable bukan basis data relasional. Itu tidak mendukung bergabung juga tidak mendukung pertanyaan kaya seperti SQL. Setiap tabel adalah peta jarang multidimensi. Tabel terdiri dari baris dan kolom, dan setiap sel memiliki cap waktu. Mungkin ada beberapa versi sel dengan prangko waktu yang berbeda. Cap waktu memungkinkan untuk operasi seperti "pilih 'n' versi halaman Web ini" atau "hapus sel yang lebih tua dari tanggal / waktu tertentu."

Untuk mengelola tabel besar, Bigtable membagi tabel pada batas baris dan menyimpannya sebagai tablet. Sebuah tablet berukuran sekitar 200 MB, dan setiap mesin menyimpan sekitar 100 tablet. Pengaturan ini memungkinkan tablet dari satu tabel tersebar di banyak server. Hal ini juga memungkinkan penyeimbangan muatan berbutir halus. Jika satu meja menerima banyak pertanyaan, ia bisa melepaskan tablet lain atau memindahkan tabel sibuk ke mesin lain yang tidak terlalu sibuk. Juga, jika sebuah mesin mati, sebuah tablet dapat tersebar di banyak server lain sehingga dampak kinerja pada mesin yang diberikan adalah minimal.

Tabel disimpan sebagai SSTable yang tidak dapat diubah dan satu ekor log (satu log per mesin). Ketika mesin kehabisan memori sistem, kompres beberapa tablet menggunakan teknik kompresi milik Google (BMDiff dan Zippy). Kompaksi kecil hanya melibatkan beberapa tablet, sementara kompaksi besar melibatkan seluruh sistem tabel dan memulihkan ruang hard disk.

Lokasi tablet Bigtable disimpan dalam sel. Pencarian tablet tertentu ditangani oleh sistem tiga tingkat. Klien mendapatkan poin ke tabel META0, yang hanya ada satu. Tabel META0 melacak banyak tablet META1 yang berisi lokasi tablet yang dicari. Baik META0 dan META1 menggunakan pre-fetching dan caching untuk meminimalkan kemacetan dalam sistem.

Penerapan

BigTable dibangun di Google File System (GFS), yang digunakan sebagai backing store untuk file log dan data. GFS menyediakan penyimpanan yang andal untuk SSTables, format file milik Google yang digunakan untuk mempertahankan data tabel.

Layanan lain yang BigTable manfaatkan adalah Chubby , layanan kunci terdistribusi yang sangat tersedia dan dapat diandalkan. Chubby memungkinkan klien untuk mengambil kunci, mungkin mengaitkannya dengan beberapa metadata, yang dapat diperbarui dengan mengirim pesan yang tetap hidup kembali ke Chubby. Kunci disimpan dalam struktur penamaan hirarki seperti filesystem.

Ada tiga jenis server utama yang diminati dalam sistem Bigtable:

  1. Master server: menetapkan tablet ke server tablet, melacak di mana tablet berada dan mendistribusikan tugas yang diperlukan.
  2. Server tablet: menangani permintaan baca / tulis untuk tablet dan memecah tablet saat melebihi batas ukuran (biasanya 100MB - 200MB). Jika server tablet gagal, maka 100 server tablet masing-masing mengambil 1 tablet baru dan sistem pulih.
  3. Server kunci: contoh layanan kunci terdistribusi Chubby. Banyak tindakan dalam BigTable yang memerlukan penguncian kunci termasuk membuka tablet untuk menulis, memastikan bahwa tidak ada lebih dari satu Master aktif pada satu waktu, dan pengecekan kontrol akses.

Contoh dari makalah penelitian Google:

teks alternatif

Sepotong tabel contoh yang menyimpan halaman web. Nama baris adalah URL terbalik . Keluarga kolom isi berisi konten halaman , dan keluarga kolom anchor berisi teks dari setiap jangkar yang mereferensikan halaman. Halaman beranda CNN direferensikan oleh halaman beranda Sports Illustrated dan MY-look, sehingga baris tersebut berisi kolom bernama anchor:cnnsi.comdan anchor:my.look.ca. Setiap sel jangkar memiliki satu versi ; kolom isi memiliki tiga versi , di cap waktu t3, t5dan t6.

API

Operasi khas untuk BigTable adalah pembuatan dan penghapusan keluarga tabel dan kolom, menulis data dan menghapus kolom dari satu baris. BigTable menyediakan fungsi ini untuk pengembang aplikasi dalam API. Transaksi didukung di tingkat baris, tetapi tidak di beberapa kunci baris.


Berikut ini tautan ke PDF makalah penelitian .

Dan di sini Anda dapat menemukan video yang memperlihatkan Jeff Dean dari Google dalam sebuah kuliah di University of Washington , membahas sistem penyimpanan konten Bigtable yang digunakan di backend Google.

splattne
sumber
4
Adakah yang tahu apakah itu yang dibuat dari awal atau berdasarkan pada beberapa produk? Saya mendengar di suatu tempat saya tidak ingat di mana, bahwa google pernah menggunakan Oracle, tetapi mereka menjatuhkannya karena mereka memerlukan beberapa modifikasi yang tidak akan dilakukan atau membiarkan Oracle melakukannya. Saya akan mencoba untuk mendapatkan tautannya.
OscarRyz
5
Itu dari awal, seperti kebanyakan kompetensi inti mereka yang lain (server web, GFS, ...).
Matt J
5
Saya sedang mencari info tentang algoritma kompresi (BMDiff dan Zippy) dan menemukan bahwa sekarang Zippy disebut Snappy dan diterbitkan dalam Google Code: code.google.com/p/snappy
helios
7
Sekarang mereka menggunakan Spanner, penerus
BigTable
Jadi, tampilannya mirip dengan database nosql seperti Mongodb atau Marklogic.
stuckedoverflow
32

Spanner adalah sistem manajemen basis data relasional (RDBMS) Google yang didistribusikan secara global, penerus BigTable . Google mengklaim itu bukan sistem relasional murni karena setiap tabel harus memiliki kunci utama.

Inilah tautan makalahnya.

Spanner adalah database Google scalable, multi-versi, didistribusikan secara global, dan direplikasi secara sinkron. Ini adalah sistem pertama yang mendistribusikan data dalam skala global dan mendukung transaksi yang didistribusikan secara eksternal. Makalah ini menjelaskan bagaimana Spanner terstruktur, set fiturnya, alasan yang mendasari berbagai keputusan desain, dan API waktu baru yang mengekspos ketidakpastian jam. API ini dan implementasinya sangat penting untuk mendukung konsistensi eksternal dan berbagai fitur canggih: bacaan non-pemblokiran di masa lalu, transaksi hanya-baca yang bebas-kunci, dan perubahan skema atom, di seluruh Spanner.

Basis data lain yang ditemukan oleh Google adalah Megastore . Berikut ini abstraknya:

Megastore adalah sistem penyimpanan yang dikembangkan untuk memenuhi persyaratan layanan online interaktif saat ini. Megastore memadukan skalabilitas datastore NoSQL dengan kenyamanan RDBMS tradisional dengan cara baru, dan memberikan jaminan konsistensi yang kuat dan ketersediaan tinggi. Kami menyediakan semantik ACID sepenuhnya serializable dalam partisi data halus. Partisi ini memungkinkan kita untuk mereplikasi masing-masing penulisan di seluruh jaringan area luas dengan latensi yang wajar dan mendukung failover mulus antara pusat data. Makalah ini menjelaskan semantik dan algoritma replikasi Megastore. Ini juga menjelaskan pengalaman kami mendukung berbagai layanan produksi Google yang dibangun dengan Megastore.

pengguna
sumber
Sayang sekali Spanner adalah proyek sumber tertutup. Menurut deskripsi, saya juga ingin menggunakannya untuk proyek saya.
Mikko Rantalainen
2
@MikkoRantalainen Anda mungkin ingin memeriksa ekosistem Apache Hadoop atau CockroachDB (meskipun Cockroach adalah alpha)
dualed
Terima kasih, CockroachDB terlihat menarik. Saya harus mengujinya untuk melihat kinerja seperti apa yang dimilikinya. Fiturnya terlihat seperti barang yang ingin saya miliki.
Mikko Rantalainen
1
Spanner telah tersedia untuk digunakan semua orang di Google Cloud sejak 2017: cloud.google.com/spanner
Miscreant
19

Seperti yang disebutkan orang lain, Google menggunakan solusi buatan sendiri yang disebut BigTable dan mereka telah merilis beberapa makalah yang menjelaskannya ke dunia nyata.

Orang-orang Apache memiliki implementasi dari ide-ide yang disajikan dalam makalah ini yang disebut HBase . HBase adalah bagian dari proyek Hadoop yang lebih besar yang menurut situs mereka "adalah platform perangkat lunak yang memungkinkan seseorang dengan mudah menulis dan menjalankan aplikasi yang memproses data dalam jumlah besar." Beberapa tolok ukurnya cukup mengesankan. Situs mereka ada di http://hadoop.apache.org .

EvilRyry
sumber
Tautan 404 tidak ditemukan
Shivam Jha
9

Dan mungkin juga berguna untuk mengetahui bahwa BigTable bukan database relasional (seperti MySQL) tetapi tabel hash besar (didistribusikan) yang memiliki karakteristik yang sangat berbeda. Anda dapat bermain-main dengan (versi terbatas) dari BigTable sendiri di platform Google AppEngine .

Di sebelah Hadoop yang disebutkan di atas ada banyak implementasi lain yang mencoba menyelesaikan masalah yang sama dengan BigTable (skalabilitas, ketersediaan). Saya melihat posting blog yang bagus kemarin daftar kebanyakan dari mereka di sini .

Koen Bok
sumber
6

Google terutama menggunakan Bigtable.

Bigtable adalah sistem penyimpanan terdistribusi untuk mengelola data terstruktur yang dirancang untuk skala ke ukuran yang sangat besar.

Untuk informasi lebih lanjut, unduh dokumen dari sini .

Google juga menggunakan database Oracle dan MySQL untuk beberapa aplikasi mereka.

Setiap informasi lebih lanjut yang dapat Anda tambahkan sangat dihargai.

Suresh Kumar Amrani
sumber
17
Google also use Oracle- referensi dibutuhkan.
pengguna
@user cloud.google.com/sql/docs ? Jika pengembang dapat menggunakan MySQL, setidaknya Google harus membuat "penerjemah database" dengan MySQL dan Bigtable.
1

Layanan Google memiliki arsitektur ketekunan polyglot. BigTable diungkit oleh sebagian besar layanannya seperti YouTube, Google Search, Google Analytics, dll. Layanan pencarian pada awalnya menggunakan MapReduce untuk infrastruktur pengindeksannya tetapi kemudian beralih ke BigTable selama rilis Kafein.

Google Cloud datastore memiliki lebih dari 100 aplikasi dalam produksi di Google yang menghadapi pengguna internal dan eksternal. Aplikasi seperti Gmail, Picasa, Kalender Google, Android Market & AppEngine menggunakan Cloud Datastore & Megastore.

Google Trends menggunakan MillWheel untuk pemrosesan aliran. Google Ads pada awalnya menggunakan MySQL kemudian dimigrasikan ke F1 DB - basis data relasional yang terdistribusi secara tertulis. Youtube menggunakan MySQL dengan Vitess. Google menyimpan exabytes data di seluruh server komoditas dengan bantuan Sistem File Google.

Sumber: Google Databases: Bagaimana Layanan Google Menyimpan Data Skala Petabyte-Exabyte?

Database YouTube - Bagaimana Cara Ini Menyimpan Begitu Banyak Video Tanpa Kehabisan Ruang Penyimpanan?

masukkan deskripsi gambar di sini

underdog
sumber