Google Cloud Bigtable กับ Google Cloud Datastore


124

อะไรคือความแตกต่างระหว่างGoogle Cloud Bigtableและ Google Cloud Datastore / App Engine datastore และอะไรคือข้อดี / ข้อเสียที่ใช้งานได้จริง AFAIK Cloud Datastore สร้างขึ้นจาก Bigtable


8
กรุณาอย่าปิด ขณะนี้ไม่มีเอกสารอย่างเป็นทางการเกี่ยวกับสิ่งเหล่านี้และ Google น่าจะแสดงความคิดเห็นที่นี่
Zig Mandel

ลองดูได้ที่ terrenceryan.com/blog/index.php/…
Zig Mandel

คำตอบ:


97

จากประสบการณ์การใช้งาน Datastore และการอ่านเอกสาร Bigtable ความแตกต่างที่สำคัญคือ:

  • Bigtable ถูกออกแบบมาสำหรับการทำงานร่วมกัน HBase แต่ตอนนี้มีห้องสมุดลูกค้าในหลายภาษา เดิม Datastore มุ่งเน้นไปที่นักพัฒนาเว็บแอป Python / Java / Go (เดิมคือ App Engine)
  • Bigtable คือ 'อีกเล็กน้อย IaaS กว่า Datastore ในการที่จะไม่เพียงมี แต่ต้องคลัสเตอร์จะเป็นการกำหนดค่า
  • Bigtable รองรับดัชนีเดียว - 'คีย์แถว' (คีย์เอนทิตีใน Datastore)
    • ซึ่งหมายความว่าข้อความค้นหาอยู่ในคีย์ซึ่งแตกต่างจากคุณสมบัติที่จัดทำดัชนีของ Datastore
  • Bigtable รองรับ atomicity ในแถวเดียวเท่านั้น - ไม่มีธุรกรรม
  • การกลายพันธุ์และการลบดูเหมือนจะไม่ใช่ปรมาณูใน Bigtable ในขณะที่ Datastore ให้ความสอดคล้องในที่สุดและแข็งแกร่งขึ้นอยู่กับวิธีการอ่าน / แบบสอบถาม
  • รูปแบบการเรียกเก็บเงินแตกต่างกันมาก:
    • Datastore คิดค่าบริการสำหรับการอ่าน / เขียนการจัดเก็บข้อมูลและแบนด์วิดท์
    • Bigtable เรียกเก็บเงินสำหรับ'โหนด'พื้นที่เก็บข้อมูลและแบนด์วิดท์

98

Bigtable เหมาะสำหรับข้อมูลและการวิเคราะห์จำนวนมาก

  • Cloud Bigtableจะไม่จำลองข้อมูลข้ามโซนหรือภูมิภาค (ข้อมูลภายในคลัสเตอร์เดียวถูกจำลองแบบและทนทาน) ซึ่งหมายความว่า Bigtable เร็วกว่าและมีประสิทธิภาพมากกว่าและต้นทุนต่ำกว่ามากแม้ว่าจะมีความทนทานน้อยกว่าและมีให้ในการกำหนดค่าเริ่มต้น
  • ใช้HBase API - ไม่มีความเสี่ยงในการล็อกอินหรือกระบวนทัศน์ใหม่ในการเรียนรู้
  • มันรวมเข้ากับเครื่องมือ Big Data แบบโอเพนซอร์สซึ่งหมายความว่าคุณสามารถวิเคราะห์ข้อมูลที่จัดเก็บไว้ใน Bigtable ในเครื่องมือวิเคราะห์ส่วนใหญ่ที่ลูกค้าใช้ (Hadoop, Spark ฯลฯ )
  • Bigtable จัดทำดัชนีโดยคีย์แถวเดียว
  • Bigtable อยู่ในโซนเดียว

Cloud Bigtable ได้รับการออกแบบมาสำหรับ บริษัท และองค์กรขนาดใหญ่ที่มักมีความต้องการข้อมูลขนาดใหญ่พร้อมกับภาระงานแบ็กเอนด์ที่ซับซ้อน

Datastore ได้รับการปรับให้เหมาะสมเพื่อให้บริการข้อมูลธุรกรรมมูลค่าสูงไปยังแอปพลิเคชัน

  • Cloud Datastoreมีความพร้อมใช้งานสูงมากด้วยการจำลองแบบและการซิงโครไนซ์ข้อมูล
  • Datastore เนื่องจากความคล่องตัวและความพร้อมใช้งานสูงจึงมีราคาแพงกว่า
  • Datastore เขียนข้อมูลช้าลงเนื่องจากการจำลองแบบซิงโครนัส
  • Datastore มีฟังก์ชันการทำงานที่ดีขึ้นมากสำหรับธุรกรรมและการสืบค้น (เนื่องจากมีดัชนีรอง)

3
ขณะนี้ Bigtable จำลองแบบข้ามโซนเพื่อให้พร้อมใช้งานเมื่อเผชิญกับการหยุดทำงานของโซน: cloudplatform.googleblog.com/2018/07/…
Brandon DuRette

ฉันคิดว่าธุรกรรมไม่ใช่จุดขายที่แข็งแกร่งสำหรับพื้นที่เก็บข้อมูล จาก [doc | cloud.google.com/datastore/docs/concepts/transactions] "ธุรกรรมคือชุดของการดำเนินการของ Google Cloud Datastore บนเอนทิตีอย่างน้อยหนึ่งรายการในกลุ่มเอนทิตีสูงสุด 25 กลุ่ม" นอกจากนี้ที่เก็บข้อมูลยังสร้างขึ้นบน Bigtable ใช่ไหม
zyxue

19

Bigtable และ Datastore แตกต่างกันมาก ใช่ที่เก็บข้อมูลถูกสร้างขึ้นบน Bigtable แต่ก็ไม่ได้ทำให้เป็นแบบนี้ นั่นก็เหมือนกับการบอกว่ารถสร้างขึ้นบนล้อดังนั้นรถก็ไม่ต่างจากล้อมากนัก

Bigtable และ Datastore ให้โมเดลข้อมูลที่แตกต่างกันมากและมีความหมายที่แตกต่างกันมากในการเปลี่ยนแปลงข้อมูล

ความแตกต่างที่สำคัญคือ Datastore ให้ธุรกรรม ACID ที่เหมือนฐานข้อมูล SQL บนชุดย่อยของข้อมูลที่เรียกว่ากลุ่มเอนทิตี (แม้ว่าภาษาแบบสอบถาม GQL จะมีข้อ จำกัด มากกว่า SQL มาก) Bigtable เป็น NoSQL อย่างเคร่งครัดและมาพร้อมกับการรับประกันที่อ่อนแอกว่ามาก


4
คุณทำได้ดีจนถึงย่อหน้าสุดท้าย datastore ให้ธุรกรรม แต่ไม่มีอะไรเหมือนกับ SQL และไม่ใช่ ACID อย่างแน่นอน
Daniel Roseman

4
@DanielRoseman จริงๆแล้วมันเป็นอย่างมาก นี่คือคำพูดจากบทความเกี่ยวกับ Megastore (ซึ่งสร้าง Datastore): "กลุ่มเอนทิตี Megastore แต่ละกลุ่มทำหน้าที่เป็นฐานข้อมูลขนาดเล็กที่ให้ความหมาย ACID แบบอนุกรมได้" "เราแบ่งพื้นที่เก็บข้อมูลและจำลองแต่ละพาร์ติชันแยกจากกันโดยให้ความหมายของกรดทั้งหมดภายในพาร์ติชัน" (research.google.com/pubs/pub36971.html)
user2771609

ฉันคิดว่ามันทำให้เข้าใจผิดที่จะเรียกมันว่า Sql ส่วนย่อยมากที่สุด ไม่มีการนับ / กลุ่มที่มีประสิทธิภาพการสืบค้นทั้งหมดต้องใช้ดัชนี ฯลฯ
Zig Mandel

4
ภาษาของการสืบค้นและการแยกธุรกรรมเป็นสิ่งที่แตกต่างกันดูเหมือนว่าคุณจะผสมกัน ฉันกำลังทำการเรียกร้องเกี่ยวกับรายการหลัง ( ธุรกรรม ACID ) ในความคิดเห็นของคุณคุณสมมติว่าฉันกำลังพูดถึงอดีต บางทียัติภังค์จะชี้แจง? ฉันจะพูดถึงปัญหาภาษาของข้อความค้นหาอย่างชัดเจนเพื่อขจัดข้อสงสัย
user2771609

8

ถ้าคุณอ่านเอกสาร BigTable เป็นนี้และ Datastore เป็นMegastore Datastore คือ BigTable บวกกับการจำลองแบบธุรกรรมและดัชนี (และมีราคาแพงกว่ามาก)


แพงกว่าจริงหรือ? ขั้นต่ำสำหรับ BigTable คือ 3 โหนดที่ 10GB HDD คือ $ 1400 / เดือน ดูเหมือนจะค่อนข้างสูงไม่ใช่เหรอ?
benji

@ben ในประสบการณ์ที่ผ่านมาของฉันมันเป็น Datastore จะคิดค่าบริการต่อการดำเนินการแทนที่จะเป็นต่อชั่วโมง (ถ้าคุณไม่ได้ใช้งานมากขนาดนั้นก็ใช่ว่าคุณจะไม่จ่าย Datastore มากนัก แต่ถ้าคุณมี Traffic สูงฉันคิดว่า bigtable ถูกกว่ามาก) ฉันคิดว่า Bigtable เรียกร้อง 10k ops ต่อวินาที? ในความเป็นจริงฉันพบว่ามันต่ำกว่าเช่นประมาณ 1-2k แต่ยังมี 3 โหนดอยู่ที่> 5k / s หากคุณรักษาปริมาณงานนั้นไว้เป็นเวลาหนึ่งเดือนและจับคู่กับราคา Datastore อาจสูงกว่า 1.4k มาก
Justin Zhang

ลิงก์ MegaStore เสีย
gstackoverflow

7

ฉันจะพยายามสรุปคำตอบทั้งหมดข้างต้นรวมทั้งสิ่งที่ได้รับใน Coursea Google Cloud Platform Big Data และ Machine Learning Fundamentals

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      Category       |                             BigTable                             |                Datastore                 |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| Technology          | Based on HBase(uses HBase API)                                   | Uses BigTable itself                     |  |
| ----------------    |                                                                  |                                          |  |
| Access Mataphor     | Key/Value (column-families) like Hbase                           | Persistent hashmap                       |  |
| ----------------    |                                                                  |                                          |  |
| Read                | Scan Rows                                                        | Filter Objects on property               |  |
| ----------------    |                                                                  |                                          |  |
| Write               | Put Row                                                          | Put Object                               |  |
| ----------------    |                                                                  |                                          |  |
| Update Granularity  | can't update row ( you should write a new row, can't update one) | can update attribute                     |  |
| ----------------    |                                                                  |                                          |  |
| Capacity            | Petabytes                                                        | Terbytes                                 |  |
| ----------------    |                                                                  |                                          |  |
| Index               | Index key only (you should properly design the key)              | You can index any property of the object |  |
| Usage and use cases | High throughput, scalable flatten data                           | Structured data for Google App Engine    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

ตรวจสอบภาพนี้ด้วย: ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่


2

ประเด็นที่ค่อนข้างน้อยที่ต้องพิจารณา ณ เดือนพฤศจิกายน 2559 ไลบรารีไคลเอ็นต์ python bigtable ยังอยู่ใน Alpha ซึ่งหมายความว่าการเปลี่ยนแปลงในอนาคตอาจไม่สามารถใช้งานร่วมกันได้ นอกจากนี้ไลบรารี python ขนาดใหญ่ยังเข้ากันไม่ได้กับสภาพแวดล้อมมาตรฐานของ App Engine คุณต้องใช้แบบยืดหยุ่น


ณ เดือนพฤศจิกายน 2559 เช่นเดียวกับ Java
Aram Paronikyan

2

นี่อาจเป็นความแตกต่างที่สำคัญอีกชุดหนึ่งระหว่าง Google Cloud Bigtable และ Google Cloud Datastore พร้อมกับบริการอื่น ๆ เนื้อหาที่แสดงในภาพด้านล่างยังสามารถช่วยคุณในการเลือกบริการที่เหมาะสม

ใส่คำอธิบายภาพที่นี่

ใส่คำอธิบายภาพที่นี่


1

ใส่คำอธิบายภาพที่นี่

Cloud Datastore is a highly-scalable NoSQL database for your applications.
Like Cloud Bigtable, there is no need for you to provision database instances.
Cloud Datastore uses a distributed architecture to automatically manage
scaling. Your queries scale with the size of your result set, not the size of your
data set.
Cloud Datastore runs in Google data centers, which use redundancy to
minimize impact from points of failure. Your application can still use Cloud
Datastore when the service receives a planned upgrade.

ใส่คำอธิบายภาพที่นี่

 Choose Bigtable if the data is:
Big
● Large quantities (>1 TB) of semi-structured or structured data
Fast
● Data is high throughput or rapidly changing
NoSQL
● Transactions, strong relational semantics not required
And especially if it is:
Time series
● Data is time-series or has natural semantic ordering
Big data
● You run asynchronous batch or real-time processing on the data
Machine learning
● You run machine learning algorithms on the data
Bigtable is designed to handle massive workloads at consistent low latency
and high throughput, so it's a great choice for both operational and analytical
applications, including IoT, user analytics, and financial data analysis.

0

Datastore มีแอปพลิเคชันที่พร้อมกว่าและเหมาะสำหรับบริการที่หลากหลายโดยเฉพาะอย่างยิ่งสำหรับไมโครเซอร์วิส

เทคโนโลยีพื้นฐานของ Datastore คือ Big Table ดังนั้นคุณสามารถจินตนาการได้ว่า Big Table มีประสิทธิภาพมากกว่า

Datastore มาพร้อมกับการใช้งานฟรี 20K ต่อวันคุณสามารถคาดหวังว่าจะโฮสต์เซิร์ฟเวอร์ที่มีฐานข้อมูลที่เชื่อถือได้โดยมีค่าใช้จ่ายเป็นศูนย์

คุณยังสามารถตรวจสอบไลบรารี Datastore ORM นี้ได้ซึ่งมาพร้อมกับคุณสมบัติที่ยอดเยี่ยมมากมาย https://www.npmjs.com/package/ts-datastore-orm

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