it-swarm-vi.com

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

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

357
solrevdev

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.

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 một 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ể chuyển 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 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 các 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 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ủ chính quan tâm 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ì mỗi máy chủ 100 máy tính bảng sẽ đón 1 máy tính bảng mới và hệ thống 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 tại một thời điểm và kiểm tra kiểm soát truy cập.

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

alt text

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 dấu thời gian 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 PDF của bài nghiên cứ .

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ụ trợ của Google.

565
splattne

Đó là thứ mà họ tự xây dựng - nó được gọi là Bigtable.

http://en.wikipedia.org/wiki/BigTable

Có một bài báo của Google trên cơ sở dữ liệu:

http://research.google.com/archive/bigtable.html

50
Mark Ingram

Spanner là hệ thống quản lý cơ sở dữ liệu quan hệ được phân phối toàn cầu của Google (RDBMS), người kế thừ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.

28
user

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 người ta 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ọ tại http://hadoop.Apache.org .

19
EvilRyry

Mặc dù Google sử dụng BigTable cho tất cả các ứng dụng chính của họ, nhưng họ cũng sử dụng MySQL cho các ứng dụng khác (có thể là nhỏ).

13
Mauricio Scheffer

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 phối) 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 trên blog Nice ngày hôm qua liệt kê hầu hết trong số họ tại đây .

9
Koen Bok

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 xuống tài liệu từ tại đâ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.

6
Suresh Kumar Amrani