Google sử dụng cơ sở dữ liệu nào?


370

Đó có phải là Oracle hay MySQL hay thứ gì đó mà họ tự xây dựng?


187
Anh ta sẽ sử dụng Google khi anh ta muốn tìm hiểu xem cơ sở dữ liệu nào bị tràn
flybywire

340
Hey, đừng bash anh ta, tôi đã kết thúc ở đây từ một tìm kiếm google lol.
Shawn Mclean

141
Có phải trớ trêu hơn nữa là kết quả hàng đầu cho việc tìm kiếm "Cơ sở dữ liệu của Google" trên Google hiện là trang này, trong đó nhận xét đầu tiên là sử dụng Google?
Patrick Szalapski

89
@Patrick Szalapski nghe như một tình huống tràn chồng.
Thomas

5
Trước khi tìm kiếm, tôi đã tự hỏi liệu Google có cho tôi câu trả lời đúng không nhưng ở đây chúng tôi đi: P
Abdul Saboor

Câu trả lời:


581

Cái bàn lớn

Hệ thống lưu trữ phân tán cho dữ liệu có cấu trúc

Bigtable là một hệ thống lưu trữ phân tán (được xây dựng bởi Google) để quản lý dữ liệu có cấu trúc được thiết kế để mở rộng quy mô rất lớn: petabyte dữ liệu trên hàng ngàn máy chủ hàng hóa.

Nhiều dự án tại Google lưu trữ dữ liệu trong Bigtable, bao gồm lập chỉ mục web, Google Earth và Google Finance. Các ứng dụng này đặt ra các yêu cầu rất khác nhau đối với Bigtable, cả về kích thước dữ liệu (từ URL đến trang web đến hình ảnh vệ tinh) và yêu cầu độ trễ (từ xử lý hàng loạt phụ trợ đến phục vụ dữ liệu thời gian thực).

Bất chấp những nhu cầu khác nhau, Bigtable đã cung cấp thành công một giải pháp linh hoạt, hiệu suất cao cho tất cả các sản phẩm này của Google.

Một số tính năng

  • DBMS nhanh và cực kỳ quy mô lớn
  • một bản đồ được sắp xếp đa chiều thưa thớt, phân tán, chia sẻ các đặc điểm của cả cơ sở dữ liệu hướng hàng và hướng cột.
  • được thiết kế để mở rộng phạm vi petabyte
  • nó hoạt động trên hàng trăm hoặc hàng ngàn máy
  • thật dễ dàng để thêm nhiều máy vào hệ thống và tự động bắt đầu tận dụng các tài nguyên đó mà không cần cấu hình lại
  • mỗi bảng có nhiều thứ nguyên (một trong số đó là một trường theo thời gian, cho phép tạo phiên bản)
  • các bảng được tối ưu hóa cho GFS (Hệ thống tệp của Google) bằng cách chia thành nhiều máy tính bảng - các phân đoạn của bảng được phân chia theo một hàng được chọn sao cho máy tính bảng sẽ có kích thước ~ 200 megabyte.

Ngành kiến ​​trúc

BigTable không phải là một cơ sở dữ liệu quan hệ. Nó không hỗ trợ các phép nối cũng như không hỗ trợ các truy vấn giống như SQL. Mỗi bảng là một bản đồ thưa thớt đa chiều. Các bảng bao gồm các hàng và cột và mỗi ô có dấu thời gian. Có thể có nhiều phiên bản của một ô có dấu thời gian khác nhau. Dấu thời gian cho phép các hoạt động như "chọn phiên bản 'của trang Web này" hoặc "xóa các ô cũ hơn ngày / giờ cụ thể."

Để quản lý các bảng lớn, Bigtable chia các bảng ở ranh giới hàng và lưu chúng dưới dạng máy tính bảng. Một máy tính bảng có dung lượng khoảng 200 MB và mỗi máy tiết kiệm khoảng 100 máy tính bảng. Thiết lập này cho phép các máy tính bảng từ một bảng được trải rộng giữa nhiều máy chủ. Nó cũng cho phép cân bằng tải hạt mịn. Nếu một bảng nhận được nhiều truy vấn, nó có thể loại bỏ các máy tính bảng khác hoặc di chuyển bảng bận sang máy khác không quá bận. Ngoài ra, nếu một máy bị hỏng, một máy tính bảng có thể được trải rộng trên nhiều máy chủ khác để tác động hiệu suất lên bất kỳ máy cụ thể nào là tối thiểu.

Các bảng được lưu trữ dưới dạng SSTables bất biến và đuôi của các bản ghi (một bản ghi trên mỗi máy). Khi một máy hết bộ nhớ hệ thống, nó sẽ nén một số máy tính bảng bằng các kỹ thuật nén độc quyền của Google (BMDiff và Zippy). Các phép tính nhỏ chỉ liên quan đến một vài máy tính bảng, trong khi các phép tính chính liên quan đến toàn bộ hệ thống bảng và phục hồi không gian đĩa cứng.

Các vị trí của máy tính bảng Bigtable được lưu trữ trong các tế bào. Việc tra cứu bất kỳ máy tính bảng cụ thể nào được xử lý bởi hệ thống ba tầng. Các khách hàng nhận được một điểm đến bảng META0, trong đó chỉ có một. Bảng META0 theo dõi nhiều máy tính bảng META1 có chứa vị trí của các máy tính bảng được tra cứu. Cả META0 và META1 đều sử dụng rất nhiều việc tìm nạp trước và bộ nhớ đệm để giảm thiểu tắc nghẽn trong hệ thống.

Thực hiện

BigTable được xây dựng trên Hệ thống tệp của Google (GFS), được sử dụng làm kho lưu trữ sao lưu cho các tệp nhật ký và dữ liệu. GFS cung cấp lưu trữ đáng tin cậy cho SSTables, định dạng tệp thuộc sở hữu của Google được sử dụng để duy trì dữ liệu bảng.

Một dịch vụ khác mà BigTable sử dụng rất nhiều là Chubby , một dịch vụ khóa phân tán đáng tin cậy, có tính sẵn sàng cao. Chubby cho phép khách hàng lấy một khóa, có thể liên kết nó với một số siêu dữ liệu, nó có thể gia hạn bằng cách gửi các tin nhắn còn sống lại cho Chubby. Các khóa được lưu trữ trong một cấu trúc đặt tên phân cấp giống như hệ thống tập tin.

Có ba loại máy chủ quan tâm chính trong hệ thống Bigtable:

  1. Máy chủ chính: gán máy tính bảng cho máy chủ máy tính bảng, theo dõi vị trí đặt máy tính bảng và phân phối lại các tác vụ khi cần.
  2. Máy chủ máy tính bảng: xử lý các yêu cầu đọc / ghi cho máy tính bảng và tách máy tính bảng khi chúng vượt quá giới hạn kích thước (thường là 100MB - 200MB). Nếu một máy chủ máy tính bảng bị lỗi, thì 100 máy chủ máy tính bảng mỗi máy chủ sẽ đón 1 máy tính bảng mới và hệ thống sẽ phục hồi.
  3. Khóa máy chủ: phiên bản của dịch vụ khóa phân tán Chubby. Rất nhiều hành động trong BigTable yêu cầu mua lại các khóa bao gồm mở máy tính bảng để viết, đảm bảo rằng không có nhiều hơn một Master hoạt động cùng một lúc và kiểm tra kiểm soát truy cập.

Ví dụ từ bài nghiên cứu của Google:

văn bản thay thế

Một lát của bảng ví dụ lưu trữ các trang Web. Tên hàng là một URL đảo ngược . Họ cột nội dung chứa nội dung trang và họ cột neo chứa văn bản của bất kỳ neo nào tham chiếu trang. Trang chủ của CNN được tham chiếu bởi cả trang chủ Sports Illustrated và MY-look, do đó, hàng chứa các cột có tên anchor:cnnsi.comanchor:my.look.ca. Mỗi ô neo có một phiên bản ; cột nội dung có ba phiên bản , tại timestamps t3, t5t6.

API

Các hoạt động tiêu biểu cho BigTable là tạo và xóa các bảng và họ cột, ghi dữ liệu và xóa các cột khỏi một hàng. BigTable cung cấp các chức năng này cho các nhà phát triển ứng dụng trong API. Giao dịch được hỗ trợ ở cấp hàng, nhưng không phải qua một số khóa hàng.


Đây là liên kết đến bản PDF của bài nghiên cứu .

Và ở đây, bạn có thể tìm thấy một video cho thấy Jeff Dean của Google trong một bài giảng tại Đại học Washington , thảo luận về hệ thống lưu trữ nội dung Bigtable được sử dụng trong phần phụ trợ của Google.


4
Có ai biết nếu nó được xây dựng từ đầu hoặc dựa trên một số sản phẩm? Tôi đã nghe ở đâu đó tôi không nhớ nơi đó, google đã sử dụng Oracle một lần, nhưng họ bỏ nó đi vì họ cần một số sửa đổi mà Oracle sẽ không làm và cũng không cho phép họ làm. Tôi sẽ cố gắng để có được liên kết.
OscarRyz

5
Đó là từ đầu, giống như hầu hết các năng lực cốt lõi khác của họ (máy chủ web, GFS, ...).
Matt J

5
Tôi đã tìm kiếm thông tin về các thuật toán nén (BMDiff và Zippy) và thấy rằng bây giờ Zippy được gọi là Snappy và nó được xuất bản trong Google Code: code.google.com/p/snappy
helios

7
Bây giờ họ sử dụng Spanner, người kế nhiệm BigTable
deltonio2

Vì vậy, nó trông tương tự như cơ sở dữ liệu nosql như Mongodb hoặc Marklogic.
kẹt vào


32

Spanner là hệ thống quản lý cơ sở dữ liệu quan hệ được phân phối toàn cầu (RDBMS) của Google , kế thừa của BigTable . Google tuyên bố đây không phải là một hệ thống quan hệ thuần túy vì mỗi bảng phải có khóa chính.

Đây là liên kết của bài báo.

Spanner là cơ sở dữ liệu có thể mở rộng, đa phiên bản, phân phối toàn cầu và được nhân rộng của Google. Đây là hệ thống đầu tiên phân phối dữ liệu ở quy mô toàn cầu và hỗ trợ các giao dịch phân tán thống nhất bên ngoài. Bài viết này mô tả cách Spanner được cấu trúc, bộ tính năng của nó, lý do cơ bản dựa trên các quyết định thiết kế khác nhau và API thời gian mới lạ cho thấy sự không chắc chắn của đồng hồ. API này và việc triển khai nó rất quan trọng để hỗ trợ tính nhất quán bên ngoài và một loạt các tính năng mạnh mẽ: đọc không chặn trong quá khứ, giao dịch chỉ đọc không khóa và thay đổi lược đồ nguyên tử, trên tất cả Spanner.

Một cơ sở dữ liệu khác được phát minh bởi Google là Megastore . Đây là bản tóm tắt:

Megastore là một hệ thống lưu trữ được phát triển để đáp ứng các yêu cầu của các dịch vụ trực tuyến tương tác ngày nay. Megastore pha trộn khả năng mở rộng của kho dữ liệu NoQuery với sự tiện lợi của RDBMS truyền thống theo cách mới lạ, và cung cấp cả đảm bảo tính nhất quán mạnh mẽ và tính sẵn sàng cao. Chúng tôi cung cấp ngữ nghĩa ACID tuần tự hóa đầy đủ trong các phân vùng dữ liệu chi tiết. Phân vùng này cho phép chúng tôi sao chép đồng bộ từng lần ghi trên một mạng diện rộng với độ trễ hợp lý và hỗ trợ chuyển đổi dự phòng liền mạch giữa các trung tâm dữ liệu. Bài viết này mô tả thuật toán nhân rộng và thuật toán sao chép của Megastore. Nó cũng mô tả kinh nghiệm của chúng tôi hỗ trợ một loạt các dịch vụ sản xuất của Google được xây dựng với Megastore.


Thật xấu hổ khi Spanner là dự án nguồn đóng. Theo mô tả, tôi cũng thích sử dụng nó cho các dự án của mình.
Mikko Rantalainen

2
@MikkoRantalainen Bạn có thể muốn kiểm tra hệ sinh thái Apache Hadoop hoặc CockroachDB (mặc dù Cockroach là alpha)
đôi vào

Cảm ơn, CockroachDB trông thú vị. Tôi phải kiểm tra nó để xem nó có hiệu suất như thế nào. Các tính năng trông giống như những thứ tôi muốn có.
Mikko Rantalainen

1
Spanner đã có sẵn cho mọi người sử dụng trên Google Cloud kể từ năm 2017: cloud.google.com/spanner
Miscreant

19

Như những người khác đã đề cập, Google sử dụng giải pháp cây nhà lá vườn có tên BigTable và họ đã phát hành một vài bài viết mô tả nó ra thế giới thực.

Những người Apache có một triển khai các ý tưởng được trình bày trong các bài báo này được gọi là HBase . HBase là một phần của dự án Hadoop lớn hơn mà theo trang web của họ "là một nền tảng phần mềm cho phép một người dễ dàng viết và chạy các ứng dụng xử lý lượng dữ liệu khổng lồ." Một số điểm chuẩn khá ấn tượng. Trang web của họ là tại http://hadoop.apache.org .


Liên kết là 404 không tìm thấy
Shivam Jha


9

Và cũng có thể hữu ích khi biết rằng BigTable không phải là cơ sở dữ liệu quan hệ (như MySQL) mà là một bảng băm (phân tán) khổng lồ có các đặc điểm rất khác nhau. Bạn có thể tự chơi xung quanh với (một phiên bản giới hạn) của BigTable trên nền tảng Google AppEngine .

Bên cạnh Hadoop được đề cập ở trên, có nhiều triển khai khác cố gắng giải quyết các vấn đề tương tự như BigTable (khả năng mở rộng, tính sẵn sàng). Tôi thấy một bài đăng blog tốt đẹp ngày hôm qua liệt kê hầu hết trong số họ ở đây .


6

Google chủ yếu sử dụng Bigtable.

Bigtable là một hệ thống lưu trữ phân tán để quản lý dữ liệu có cấu trúc được thiết kế để mở rộng quy mô đến một kích thước rất lớn.

Để biết thêm thông tin, tải tài liệu từ đây .

Google cũng sử dụng cơ sở dữ liệu Oracle và MySQL cho một số ứng dụng của họ.

Bất kỳ thông tin bạn có thể thêm được đánh giá cao.


17
Google also use Oracle- tham khảo cần thiết.
người dùng

@user cloud.google.com/sql/docs ? Nếu các nhà phát triển có thể sử dụng MySQL, ít nhất Google phải tạo ra một "trình dịch cơ sở dữ liệu" với MySQL và Bigtable.

1

Các dịch vụ của Google có kiến ​​trúc kiên trì polyglot. BigTable được tận dụng bởi hầu hết các dịch vụ của mình như YouTube, Google Search, Google Analytics, v.v. Dịch vụ tìm kiếm ban đầu sử dụng MapReduce cho cơ sở hạ tầng lập chỉ mục của nó nhưng sau đó được chuyển sang BigTable trong quá trình phát hành Caffeine.

Kho dữ liệu Google Cloud có hơn 100 ứng dụng đang được sản xuất tại Google cả đối mặt với người dùng nội bộ và bên ngoài. Các ứng dụng như Gmail, Picasa, Lịch Google, Android Market & AppEngine sử dụng Cloud Datastore & Megastore.

Google Xu hướng sử dụng MillWheel để xử lý luồng. Quảng cáo Google ban đầu được sử dụng MySQL sau đó di chuyển sang F1 DB - cơ sở dữ liệu quan hệ phân tán tùy chỉnh bằng văn bản. Youtube sử dụng MySQL với Vitess. Google lưu trữ exabyte dữ liệu trên các máy chủ hàng hóa với sự trợ giúp của Hệ thống tệp Google.

Nguồn: Cơ sở dữ liệu Google: Dịch vụ Google lưu trữ dữ liệu quy mô Petabyte-Exabyte như thế nào?

Cơ sở dữ liệu YouTube - Làm thế nào để nó lưu trữ rất nhiều video mà không hết dung lượng lưu trữ?

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.