\ud83e\udd14 What Is a Distributed Database?
A distributed database spreads data across multiple servers (nodes) in different locations. The CAP theorem says you can only guarantee two of three properties: Consistency (every read sees the latest write), Availability (every request gets a response), and Partition Tolerance (the system works despite network splits).
Why does this matter? Every major internet service from Google to Netflix relies on distributed databases. Understanding the tradeoffs between consistency and availability is essential for building reliable, scalable systems that serve billions of users.
📖 Tìm hiểu sâu
Ví dụ 1
Hãy tưởng tượng một hệ thống thư viện có các chi nhánh ở 5 thành phố, tất cả đều có chung một danh mục. Khi có người soát sổ tại Chi nhánh A, tất cả các chi nhánh khác đều cần cập nhật sổ sách. Nếu đường dây điện thoại đến Nhánh C bị hỏng (phân vùng mạng), Nhánh C vẫn có thể hiển thị sách có sẵn - đó là vấn đề về tính nhất quán. Bạn có thể khóa tất cả các khoản cho vay cho đến khi Chi nhánh C kết nối lại (chọn tính nhất quán) hoặc để mỗi chi nhánh tiếp tục cho vay độc lập và đối chiếu sau (chọn tính khả dụng).
Ví dụ 2
Hãy nghĩ đến cuộc trò chuyện nhóm với bạn bè ở các quốc gia khác nhau. Khi bạn gửi tin nhắn, mọi người sẽ thấy nó theo thứ tự như nhau. Nhưng nếu internet của ai đó bị rớt, họ sẽ bỏ lỡ tin nhắn và có thể trả lời thông tin lỗi thời — tạo ra các chuỗi cuộc trò chuyện xung đột. Cơ sở dữ liệu phân tán phải đối mặt với vấn đề chính xác này ở quy mô lớn và sử dụng các kỹ thuật như đồng hồ vector và CRDT để giải quyết tình trạng hỗn loạn khi mọi người kết nối lại.
🎯 Mẹo sử dụng
Người mới
Bắt đầu với 5 nút và Hệ số sao chép 3 - điều này có nghĩa là mỗi phần dữ liệu được lưu trữ trên 3 trong số 5 nút
Trung cấp
So sánh tính nhất quán ghi ALL và ONE - ALL chậm hơn nhưng đảm bảo mọi bản sao đều có dữ liệu mới nhất
Chuyên gia
Tắt Đồng hồ Vector và kích hoạt ghi đồng thời trong một phân vùng để quan sát các xung đột chưa được giải quyết
📚 Thuật ngữ
🏆 Nhân vật chính
Eric Brewer (2000)
Xây dựng Định lý CAP tại UC Berkeley, định hình cơ bản thiết kế cơ sở dữ liệu phân tán bằng cách chứng minh tính không thể đảm bảo đồng thời tính nhất quán, tính khả dụng và dung sai phân vùng
Leslie Lamport (1998)
Tạo ra thuật toán đồng thuận Paxos và đi tiên phong trong lý thuyết về hệ thống phân tán với các khái niệm như đồng hồ logic, dấu thời gian Lamport và Bài toán tổng quát Byzantine
Diego Ongaro (2014)
Đã thiết kế thuật toán đồng thuận Raft tại Stanford, làm cho sự đồng thuận phân tán trở nên dễ hiểu và thiết thực đối với các hệ thống trong thế giới thực như etcd và CockroachDB
Werner Vogels (2007)
Dẫn đầu thiết kế Dynamo của Amazon, giới thiệu hàm băm nhất quán, đồng hồ vectơ và số đại biểu cẩu thả — truyền cảm hứng cho Cassandra, Riak và toàn bộ phong trào NoSQL
Jeff Dean & Wilson Hsieh (2012)
Google Spanner được đồng thiết kế, cơ sở dữ liệu phân tán toàn cầu đầu tiên với các giao dịch nhất quán bên ngoài bằng cách sử dụng API TrueTime và đồng bộ hóa GPS/đồng hồ nguyên tử
Marc Shapiro (2011)
Tiên phong về các kiểu dữ liệu sao chép không xung đột (CRDT) tại INRIA, cung cấp nền tảng toán học cho tính nhất quán cuối cùng mà không cần phối hợp
🎓 Tài nguyên học tập
- Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services [paper]
Chứng minh chính thức của định lý CAP, thiết lập kết quả cơ bản không thể có cho các hệ thống phân tán (ACM SIGACT News, 2002) - Dynamo: Amazon's Highly Available Key-value Store [paper]
Bài viết có ảnh hưởng của Amazon về lưu trữ phân tán nhất quán cuối cùng bằng cách sử dụng hàm băm nhất quán, đồng hồ vectơ và số đại biểu cẩu thả (SOSP 2007) - Spanner: Google's Globally Distributed Database [paper]
Cơ sở dữ liệu nhất quán toàn cầu dựa trên TrueTime của Google đạt được tính nhất quán bên ngoài thông qua đồng bộ hóa GPS và đồng hồ nguyên tử (OSDI 2012) - In Search of an Understandable Consensus Algorithm (Raft) [paper]
Thuật toán đồng thuận Raft được thiết kế để dễ hiểu, hiện được sử dụng trong etcd, CockroachDB và TiKV (USENIX ATC 2014) - Designing Data-Intensive Applications [article]
Hướng dẫn toàn diện của Martin Kleppmann về các nguyên tắc cơ bản, sao chép, phân vùng và nhất quán của hệ thống phân tán - Jepsen.io [article]
Kiểm tra và phân tích nghiêm ngặt của Kyle Kingsbury về các tuyên bố về tính chính xác của cơ sở dữ liệu phân tán trong các điều kiện lỗi thực tế - The Raft Consensus Algorithm Visualization [article]
Trực quan hóa tương tác thuật toán đồng thuận Raft với việc lựa chọn người lãnh đạo từng bước và sao chép nhật ký