Google ใช้ฐานข้อมูลใด


370

มันคือ Oracle หรือ MySQL หรือสิ่งที่พวกเขาสร้างขึ้นเอง?


187
เขาจะใช้ Google เมื่อเขาต้องการค้นหาว่าสแต็กฐานข้อมูลล้นใช้ไปอย่างไร
flybywire

340
เฮ้อย่าทุบตีเขาฉันลงเอยที่นี่จากการค้นหาด้วยกูเกิ้ลแล้ว
Shawn Mclean

141
เป็นเรื่องประชดหรือไม่ที่ผลลัพธ์สูงสุดในการค้นหา "ฐานข้อมูลของ Google" ใน Google ตอนนี้เป็นหน้านี้ซึ่งความคิดเห็นแรกคือการใช้ Google?
Patrick Szalapski

89
@Patrick Szalapski ดูเหมือนสถานการณ์สแต็คล้น
โทมัส

5
ก่อนค้นหาฉันสงสัยว่า Google จะให้คำตอบที่ถูกต้องหรือไม่ แต่เราไปกันเลย: P
Abdul Saboor

คำตอบ:


581

Bigtable

ระบบจัดเก็บข้อมูลแบบกระจายสำหรับข้อมูลที่มีโครงสร้าง

Bigtable เป็นระบบจัดเก็บข้อมูลแบบกระจาย (สร้างโดย Google) สำหรับการจัดการข้อมูลที่มีโครงสร้างที่ออกแบบมาเพื่อปรับขนาดให้ใหญ่ขนาด: เพตาไบต์ของข้อมูลในเซิร์ฟเวอร์สินค้าโภคภัณฑ์นับพัน

หลายโครงการที่ Google เก็บข้อมูลไว้ใน Bigtable รวมถึงการทำดัชนีเว็บ Google Earth และ Google Finance แอปพลิเคชันเหล่านี้มีความต้องการที่แตกต่างกันมากใน Bigtable ทั้งในแง่ของขนาดข้อมูล (จาก URL ไปยังหน้าเว็บไปยังภาพถ่ายจากดาวเทียม) และความต้องการเวลาแฝง (จากการประมวลผลแบ็กเอนด์จำนวนมากไปจนถึงการให้บริการข้อมูล

แม้จะมีความต้องการที่หลากหลายเหล่านี้ Bigtable ได้มอบโซลูชั่นที่มีความยืดหยุ่นและประสิทธิภาพสูงสำหรับผลิตภัณฑ์ Google เหล่านี้ทั้งหมด

คุณสมบัติบางอย่าง

  • DBMS ที่รวดเร็วและมีขนาดใหญ่มาก
  • แผนที่ที่กระจัดกระจายกระจายหลายมิติกระจายคุณลักษณะของทั้งฐานข้อมูลแถวและฐานข้อมูลเชิงคอลัมน์
  • ออกแบบมาเพื่อปรับขนาดให้อยู่ในช่วงเพตาไบต์
  • มันทำงานได้หลายร้อยหรือหลายพันเครื่อง
  • มันง่ายที่จะเพิ่มเครื่องจักรเข้าสู่ระบบและเริ่มใช้ประโยชน์จากทรัพยากรเหล่านั้นโดยอัตโนมัติโดยไม่ต้องทำการตั้งค่าใหม่
  • แต่ละตารางมีหลายมิติ (หนึ่งในนั้นคือฟิลด์สำหรับเวลาอนุญาตให้กำหนดเวอร์ชัน)
  • ตารางได้รับการปรับให้เหมาะกับ GFS (Google File System) โดยแบ่งออกเป็นหลายแท็บเล็ต - แบ่งส่วนของตารางเป็นแบ่งตามแถวที่เลือกเพื่อให้แท็บเล็ตมีขนาดประมาณ 200 เมกะไบต์

สถาปัตยกรรม

BigTable ไม่ใช่ฐานข้อมูลเชิงสัมพันธ์ ไม่รองรับการเชื่อมต่อและไม่รองรับการสืบค้นที่คล้ายกับ SQL แต่ละตารางเป็นแผนที่กระจัดกระจายหลายมิติ ตารางประกอบด้วยแถวและคอลัมน์และแต่ละเซลล์มีการประทับเวลา อาจมีหลายรุ่นของเซลล์ที่มีการประทับเวลาที่แตกต่างกัน การประทับเวลาอนุญาตให้ใช้งานเช่น "select 'n' รุ่นของเว็บเพจนี้" หรือ "ลบเซลล์ที่เก่ากว่าวันที่ / เวลาที่ระบุ"

เพื่อจัดการตารางขนาดใหญ่ Bigtable แยกตารางที่ขอบเขตแถวและบันทึกเป็นแท็บเล็ต แท็บเล็ตมีขนาดประมาณ 200 MB และแต่ละเครื่องจะบันทึกได้ประมาณ 100 เม็ด การตั้งค่านี้อนุญาตให้แท็บเล็ตกระจายจากตารางเดียวไปยังเซิร์ฟเวอร์อื่น ๆ นอกจากนี้ยังช่วยให้สมดุลภาระที่ละเอียด หากตารางหนึ่งได้รับข้อความค้นหาจำนวนมากสามารถส่งแท็บเล็ตอื่นหรือย้ายตารางไม่ว่างไปยังเครื่องอื่นที่ไม่ว่าง นอกจากนี้หากเครื่องหยุดทำงานแท็บเล็ตอาจกระจายไปทั่วเซิร์ฟเวอร์อื่น ๆ เพื่อให้ประสิทธิภาพการทำงานของเครื่องใด ๆ ลดน้อยลง

ตารางจะถูกจัดเก็บเป็น SSTables ที่ไม่เปลี่ยนรูปแบบและส่วนท้ายของบันทึก (หนึ่งบันทึกต่อเครื่อง) เมื่อเครื่องไม่มีหน่วยความจำระบบจะบีบอัดแท็บเล็ตบางส่วนโดยใช้เทคนิคการบีบอัดข้อมูลที่เป็นกรรมสิทธิ์ของ Google (BMDiff และ Zippy) การบีบอัดเล็กน้อยเกี่ยวข้องกับแท็บเล็ตเพียงไม่กี่เม็ดในขณะที่การบีบอัดสำคัญเกี่ยวข้องกับระบบตารางทั้งหมดและกู้คืนพื้นที่ว่างในฮาร์ดดิสก์

ตำแหน่งของแท็บเล็ต Bigtable จะถูกเก็บไว้ในเซลล์ การค้นหาแท็บเล็ตโดยเฉพาะนั้นได้รับการจัดการโดยระบบสามระดับ ลูกค้าได้รับคะแนนจากตาราง META0 ซึ่งมีเพียงตารางเดียว ตาราง META0 ติดตามแท็บเล็ต META1 จำนวนมากที่มีตำแหน่งของแท็บเล็ตที่ค้นหาอยู่ ทั้ง META0 และ META1 ใช้การดึงข้อมูลล่วงหน้าและแคชอย่างหนักเพื่อลดปัญหาคอขวดในระบบ

การดำเนินงาน

BigTable สร้างขึ้นในGoogle File System (GFS) ซึ่งใช้เป็นที่เก็บข้อมูลสำรองสำหรับไฟล์บันทึกและข้อมูล GFS จัดเก็บข้อมูลที่เชื่อถือได้สำหรับ SSTables ซึ่งเป็นรูปแบบไฟล์ที่เป็นกรรมสิทธิ์ของ Google ที่ใช้เพื่อเก็บข้อมูลตาราง

บริการอื่นที่ BigTable ใช้งานหนักคือChubbyบริการล็อคแบบกระจายที่มีความน่าเชื่อถือสูง Chubby อนุญาตให้ลูกค้าทำการล็อคซึ่งอาจเชื่อมโยงกับข้อมูลเมตาบางตัวซึ่งสามารถต่ออายุได้โดยส่งข้อความที่มีชีวิตกลับไปที่ Chubby การล็อคถูกเก็บไว้ในโครงสร้างการตั้งชื่อตามลำดับชั้นที่คล้ายกับระบบไฟล์

มีเซิร์ฟเวอร์หลักสามประเภทที่น่าสนใจในระบบ Bigtable:

  1. เซิร์ฟเวอร์หลัก: กำหนดแท็บเล็ตให้กับเซิร์ฟเวอร์แท็บเล็ตติดตามตำแหน่งของแท็บเล็ตและกระจายงานตามที่ต้องการ
  2. เซิร์ฟเวอร์แท็บเล็ต: จัดการคำขออ่าน / เขียนสำหรับแท็บเล็ตและแท็บเล็ตแยกเมื่อเกินขีด จำกัด ขนาด (ปกติคือ 100MB - 200MB) หากเซิร์ฟเวอร์แท็บเล็ตล้มเหลวเซิร์ฟเวอร์แท็บเล็ต 100 เครื่องจะรับ 1 แท็บเล็ตใหม่และระบบกู้คืน
  3. เซิร์ฟเวอร์ล็อค: อินสแตนซ์ของบริการล็อคแบบกระจาย Chubby การทำงานหลายอย่างใน BigTable ต้องการการล็อครวมถึงการเปิดแท็บเล็ตสำหรับการเขียนเพื่อให้แน่ใจว่าไม่มี Master ที่ใช้งานอยู่มากกว่าหนึ่งคนในแต่ละครั้งและการตรวจสอบการควบคุมการเข้าถึง

ตัวอย่างจากรายงานการวิจัยของ Google:

ข้อความแสดงแทน

ส่วนหนึ่งของตารางตัวอย่างที่เก็บเว็บเพจ ชื่อแถวคือ URL ที่กลับด้าน ตระกูลคอลัมน์เนื้อหามีเนื้อหาของหน้าและตระกูลคอลัมน์จุดยึดมี ข้อความของจุดยึดใด ๆที่อ้างอิงหน้า หน้าแรกของซีเอ็นเอ็นถูกอ้างอิงโดยทั้งปอและหน้าบ้านของฉันมองเพื่อให้แถวที่มีคอลัมน์ชื่อ และanchor:cnnsi.com anchor:my.look.caเซลล์สมอแต่ละคนมีรุ่นหนึ่ง ; คอลัมน์เนื้อหามีสามรุ่นที่ timestamps t3, และt5t6

API

การดำเนินการตามปกติกับ BigTable คือการสร้างและการลบตารางและตระกูลคอลัมน์การเขียนข้อมูลและการลบคอลัมน์จากแถว BigTable ให้ฟังก์ชันนี้แก่ผู้พัฒนาแอปพลิเคชันใน API ธุรกรรมได้รับการสนับสนุนในระดับแถว แต่ไม่สามารถใช้ได้กับแป้นแถวหลายแถว


นี่คือการเชื่อมโยงไปยังไฟล์ PDF กระดาษวิจัย

และที่นี่คุณสามารถค้นหาวิดีโอที่แสดง Jeff Dean ของ Google ในการบรรยายที่ University of Washingtonโดยพูดคุยเกี่ยวกับระบบจัดเก็บเนื้อหา Bigtable ที่ใช้ในแบ็กเอนด์ของ Google


4
มีใครรู้บ้างว่ามันถูกสร้างขึ้นมาจากศูนย์หรือบางผลิตภัณฑ์? ฉันได้ยินบางที่ฉันจำไม่ได้ว่าที่ไหนที่ google ใช้ Oracle ครั้งเดียว แต่พวกเขาก็ทิ้งเพราะพวกเขาต้องการการแก้ไขบางอย่างที่ Oracle จะไม่ทำหรือไม่อนุญาตให้ทำ ฉันจะลองรับลิงค์
OscarRyz

5
มันมาจากศูนย์เช่นเดียวกับความสามารถหลักอื่น ๆ ของพวกเขา (เว็บเซิร์ฟเวอร์, GFS, ... )
Matt J

5
ฉันกำลังหาข้อมูลเกี่ยวกับอัลกอริทึมการบีบอัด (BMDiff และ Zippy) และพบว่าตอนนี้ Zippy เรียกว่า Snappy และเผยแพร่ใน Google Code: code.google.com/p/snappy
helios

7
ตอนนี้พวกเขาใช้ Spanner ซึ่งเป็นผู้สืบทอดของ BigTable
deltonio2

ดังนั้นมันจึงดูเหมือนกับฐานข้อมูล nosql เช่น Mongodb หรือ Marklogic
stuckedoverflow


32

Spannerเป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ที่กระจายทั่วโลกของ Google (RDBMS) ซึ่งเป็นตัวตายตัวแทนของBigTable BigTableGoogle อ้างว่ามันไม่ใช่ระบบสัมพันธ์ที่บริสุทธิ์เพราะแต่ละตารางจะต้องมีคีย์หลัก

นี่คือลิงค์ของกระดาษ

Spanner เป็นฐานข้อมูลที่สามารถปรับขยายได้หลายรุ่นกระจายทั่วโลกและทำซ้ำแบบซิงโครนัสของ Google มันเป็นระบบแรกในการกระจายข้อมูลในระดับโลกและรองรับธุรกรรมการกระจายที่สอดคล้องกันจากภายนอก บทความนี้จะอธิบายถึงโครงสร้างของ Spanner ชุดคุณลักษณะของมันเหตุผลในการตัดสินใจออกแบบต่าง ๆ และ API เวลาใหม่ที่ทำให้เกิดความไม่แน่นอนของนาฬิกา API นี้และการใช้งานนั้นมีความสำคัญต่อการสนับสนุนความสอดคล้องภายนอกและคุณสมบัติที่มีประสิทธิภาพหลากหลาย: การอ่านแบบไม่บล็อกในอดีตธุรกรรมแบบอ่านอย่างเดียวที่ไม่ล็อคฟรีและการเปลี่ยนแปลงแบบแผนอะตอมมิคตลอดทั้งประแจ

ฐานข้อมูลอื่นคิดค้นโดย Google เป็นMegastore นี่คือนามธรรม:

Megastore เป็นระบบจัดเก็บข้อมูลที่พัฒนาขึ้นเพื่อตอบสนองความต้องการของบริการออนไลน์เชิงโต้ตอบในปัจจุบัน Megastore ผสมผสานความสามารถในการปรับขนาดของ NoSQL datastore เข้ากับความสะดวกสบายของ RDBMS แบบดั้งเดิมในแบบที่แปลกใหม่และให้การรับประกันความมั่นคงที่มั่นคงและความพร้อมใช้งานสูง เราให้ความหมายของกรด ACID ที่ต่อเนื่องกันได้อย่างเต็มที่ภายในพาร์ติชั่นข้อมูลที่ละเอียด การแบ่งพาร์ติชันนี้ช่วยให้เราสามารถทำซ้ำการเขียนแต่ละรายการในเครือข่ายบริเวณกว้างด้วยความหน่วงแฝงที่เหมาะสมและสนับสนุนความล้มเหลวอย่างไร้รอยต่อระหว่างดาต้าเซ็นเตอร์ บทความนี้อธิบายความหมายและอัลกอริธึมการจำลองแบบของ Megastore นอกจากนี้ยังอธิบายประสบการณ์ของเราที่สนับสนุนบริการการผลิตของ Google ที่หลากหลายที่สร้างด้วย Megastore


มันเป็นความอัปยศที่ Spanner เป็นโปรเจ็กต์ปิด ตามคำอธิบายฉันชอบที่จะใช้สำหรับโครงการของฉันเช่นกัน
Mikko Rantalainen

2
@MikkoRantalainen คุณอาจต้องการตรวจสอบระบบนิเวศ Apache Hadoop หรือ CockroachDB (แม้ว่า Cockroach is alpha)
dualed

ขอบคุณ CockroachDB ดูน่าสนใจ ฉันต้องทดสอบเพื่อดูว่ามันมีประสิทธิภาพแบบไหน คุณสมบัติมีลักษณะเหมือนสิ่งที่ฉันต้องการ
Mikko Rantalainen

1
ประแจได้รับการบริการสำหรับทุกคนที่จะใช้งานบน Google Cloud ตั้งแต่ 2017: cloud.google.com/spanner
สารเลว

19

ดังที่คนอื่นพูดถึง Google ใช้โซลูชันพื้นบ้านที่เรียกว่า BigTable และพวกเขาได้เปิดตัวเอกสารสองสามฉบับที่อธิบายถึงโลกแห่งความจริง

ชาวอาปาเช่มีการดำเนินการของความคิดที่นำเสนอในเอกสารเหล่านี้เรียกว่าHBase HBase เป็นส่วนหนึ่งของโครงการ Hadoop ที่ใหญ่กว่าซึ่งอ้างอิงจากไซต์ของพวกเขา"เป็นแพลตฟอร์มซอฟต์แวร์ที่ช่วยให้ผู้ใช้เขียนและเรียกใช้แอปพลิเคชันที่ประมวลผลข้อมูลจำนวนมหาศาลได้อย่างง่ายดาย" มาตรฐานบางอย่างค่อนข้างน่าประทับใจ เว็บไซต์ของพวกเขาที่http://hadoop.apache.org


ไม่พบลิงก์เป็น 404
Shivam Jha

13

แม้ว่า Google จะใช้ BigTable สำหรับแอปพลิเคชันหลักทั้งหมด แต่พวกเขายังใช้ MySQLสำหรับแอปอื่น ๆ


3
ลิงก์ของ @ smoothdeveloper นั้นตายแล้ว อ่านสำเนาที่เก็บถาวรได้ที่นี่: web.archive.org/web/20071102233627/http://xooglers.blogspot.com/…
josh3736

9

และอาจเป็นประโยชน์ด้วยที่จะรู้ว่า BigTable ไม่ใช่ฐานข้อมูลเชิงสัมพันธ์ (เช่น MySQL) แต่เป็นตารางแฮชขนาดใหญ่ (กระจาย) ซึ่งมีลักษณะแตกต่างกันมาก คุณสามารถเล่นกับ BigTable (เวอร์ชั่น จำกัด ) ด้วยตัวคุณเองบนแพลตฟอร์มGoogle AppEngine

ถัดจาก Hadoop ที่กล่าวถึงข้างต้นมีการใช้งานอื่น ๆ อีกมากมายที่พยายามแก้ไขปัญหาเช่นเดียวกับ BigTable (ความสามารถในการขยายขนาดความพร้อมใช้งาน) ผมเห็นโพสต์บล็อกที่ดีเมื่อวานนี้ในรายการใหญ่ของพวกเขาที่นี่


6

Google ใช้ Bigtable เป็นหลัก

Bigtable เป็นระบบจัดเก็บข้อมูลแบบกระจายสำหรับการจัดการข้อมูลที่มีโครงสร้างที่ออกแบบมาเพื่อปรับขนาดให้ใหญ่มาก

สำหรับข้อมูลเพิ่มเติมดาวน์โหลดเอกสารจากที่นี่

Google ยังใช้ฐานข้อมูล Oracle และ MySQL สำหรับแอปพลิเคชันบางตัว

ข้อมูลเพิ่มเติมใด ๆ ที่คุณสามารถเพิ่มได้คือความนิยมอย่างสูง


17
Google also use Oracle- จำเป็นต้องมีการอ้างอิง
ผู้ใช้

@user cloud.google.com/sql/docs ? หากนักพัฒนาสามารถใช้ MySQL ได้ Google อย่างน้อยต้องสร้าง "ตัวแปลฐานข้อมูล" ด้วย MySQL และ Bigtable

1

บริการของ Google มีสถาปัตยกรรมการคงอยู่หลายภาษา BigTable ได้รับประโยชน์จากบริการส่วนใหญ่เช่น YouTube, Google Search, Google Analytics เป็นต้นบริการค้นหาใช้ MapReduce สำหรับโครงสร้างพื้นฐานของดัชนีในขั้นต้น แต่ภายหลังเปลี่ยนเป็น BigTable ในระหว่างการปล่อยคาเฟอีน

Google Cloud datastore มีแอปพลิเคชั่นมากกว่า 100 รายการที่ Google ผลิตทั้งผู้ใช้งานภายในและภายนอก แอปพลิเคชันเช่น Gmail, Picasa, Google Calendar, Android Market และ AppEngine ใช้ Cloud Datastore & Megastore

Google Trends ใช้ MillWheel สำหรับการประมวลผลสตรีม เริ่มแรกโฆษณา Google ใช้ MySQL ภายหลังย้ายไปยังฐานข้อมูล F1 - ฐานข้อมูลเชิงสัมพันธ์แบบกระจายที่กำหนดเองเป็นลายลักษณ์อักษร Youtube ใช้ MySQL พร้อม Vitess Google เก็บข้อมูลจำนวน Exabytes ไว้ในเซิร์ฟเวอร์ Commodity ด้วยความช่วยเหลือของ Google File System

ที่มา: ฐานข้อมูลของ Google: Google Services เก็บข้อมูลขนาดของ Petabyte-Exabyte อย่างไร

ฐานข้อมูลของ YouTube - มันจัดเก็บวิดีโอมากมายโดยไม่ต้องใช้พื้นที่จัดเก็บได้อย่างไร

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.