Mục lục:
- Loại dữ liệu trong các cửa hàng có giá trị khóa
- Việc lưu trữ nhiều bản sao của cùng một dữ liệu trên các máy chủ khác, hoặc thậm chí các kệ của các máy chủ, giúp đảm bảo tính sẵn sàng của dữ liệu nếu một máy chủ không thành công. Lỗi máy chủ xảy ra chủ yếu trong cùng một cụm.
- Để kích hoạt giải pháp xung đột tự động, bạn cần một cơ chế để chỉ ra phiên bản mới nhất của dữ liệu. Các cửa hàng chính-giá trị cố định cuối cùng đạt được giải quyết xung đột theo những cách khác nhau.
Video: Quản lý Database & Document trong MongoDB (Bài 4.1) 2025
Một khi bạn quản lý các khoá một cách hợp lý, bạn đã sẵn sàng để thiết kế cách lưu trữ dữ liệu với NoSQL và đảm bảo rằng nó an toàn và luôn luôn có thể truy cập được Bạn cần phải làm.
Loại dữ liệu trong các cửa hàng có giá trị khóa
Các cửa hàng có giá trị khóa thường hoạt động như & ldquo; xô & rdquo; cho dữ liệu nhị phân. Một số cơ sở dữ liệu cung cấp việc gõ dữ liệu nội bộ mạnh mẽ và thậm chí là hỗ trợ lược đồ. Những người khác chỉ đơn giản cung cấp các chức năng trợ giúp thuận tiện trong trình điều khiển khách hàng của họ để tuần tự các cấu trúc dữ liệu ứng dụng phổ biến cho một cửa hàng có giá trị khóa. Ví dụ bao gồm bản đồ, danh sách và bộ sắp xếp.
Lưu trữ nhị phân đơn giản-
Hỗ trợ lược đồ Avro có cấu trúc cao
-
Một giản đồ Avro tương tự như một lược đồ cơ sở dữ liệu quan hệ - thực thi một tập rất nghiêm ngặt các quy tắc định dạng về Dữ liệu đối tượng JavaScript (JSON) được lưu trữ trong cơ sở dữ liệu, như minh họa ở đây:
{username: & ldquo; afowler & rdquo;, sessionid: 13452673, kể từ: 1408318745, chủ đề: & ldquo; bluesky & rdquo;}
Bạn định nghĩa một lược đồ Avro bằng một tài liệu JSON. Đây là một ví dụ của lược đồ Avro cho dữ liệu được lưu trữ được hiển thị trước đây:
Một lược đồ Avro cung cấp đánh máy rất mạnh trong cơ sở dữ liệu khi giản đồ là quan trọng. Trong ví dụ trước, bạn sẽ thấy dữ liệu chuỗi, id phiên số, ngày (mili giây, kể từ Kỷ nguyên Thời gian Unix, dưới dạng số nguyên dài) và cài đặt cá nhân cho chủ đề để sử dụng trên trang web.Cũng lưu ý rằng kiểu username và theme có hai lựa chọn - string và null, đó là cách bạn hướng dẫn Oracle NoSQL rằng các giá trị null được cho phép. Bạn có thể đã thoát chủ đề dưới dạng chuỗi và cung cấp một tham số cấu hình bổ sung của & ldquo; mặc định & rdquo;: & ldquo; bluesky & rdquo;.
Cơ sở dữ liệu NoSQL khác cung cấp các chỉ mục thứ cấp trên bất kỳ thuộc tính tùy ý nào của một giá trị có nội dung JSON. Riak, ví dụ, cung cấp các chỉ mục phụ dựa trên
tài liệu phân vùng - về cơ bản, một thuộc tính đã biết trong một tài liệu JSON được lập chỉ mục với một loại.Điều này cho phép các truy vấn dãy (ít hơn hoặc lớn hơn) ngoài các so sánh đơn giản và không bằng nhau. Riak quản lý để cung cấp truy vấn phạm vi mà không có một lược đồ nghiêm ngặt - chỉ cần định nghĩa chỉ mục đơn giản. Nếu dữ liệu ở đó, nó sẽ được thêm vào chỉ mục. Sao lưu dữ liệu
Việc lưu trữ nhiều bản sao của cùng một dữ liệu trên các máy chủ khác, hoặc thậm chí các kệ của các máy chủ, giúp đảm bảo tính sẵn sàng của dữ liệu nếu một máy chủ không thành công. Lỗi máy chủ xảy ra chủ yếu trong cùng một cụm.
Bạn có thể vận hành bản sao theo hai cách chính:
Master-slave:
- Tất cả các lần đọc và viết xảy ra với thầy. Nô lệ tiếp nhận và nhận yêu cầu chỉ khi chủ nhân thất bại. Việc nhân bản Master-Slave thường được sử dụng trên các cửa hàng có giá trị chính xác ACID. Để cho phép sự nhất quán tối đa, cửa hàng chính được ghi vào và tất cả các bản sao được cập nhật trước khi giao dịch kết thúc. Cơ chế này được gọi là
cam kết hai pha và tạo ra thêm mạng và thời gian xử lý trên các bản sao. Master-master:
- Việc đọc và viết có thể xảy ra trên tất cả các nút quản lý khoá. Không có khái niệm về một & ldquo; tiểu học & rdquo; chủ sở hữu phân vùng. Các bản sao tổng thể tổng thể thường cuối cùng phù hợp, với cụm thực hiện hoạt động tự động để xác định giá trị mới nhất của khóa và loại bỏ các giá trị lỗi cũ hơn.
Trong hầu hết các cửa hàng có giá trị khóa, điều này xảy ra chậm - vào thời gian đọc. Riak là ngoại lệ ở đây bởi vì nó có một kiểm tra dịch vụ chống entropy cho sự nhất quán trong các hoạt động bình thường.
Dữ liệu lập bản đồ
Để kích hoạt giải pháp xung đột tự động, bạn cần một cơ chế để chỉ ra phiên bản mới nhất của dữ liệu. Các cửa hàng chính-giá trị cố định cuối cùng đạt được giải quyết xung đột theo những cách khác nhau.
Riak sử dụng cơ chế vector-đồng hồ để dự đoán bản sao nào là gần đây nhất. Các cửa hàng có giá trị quan trọng khác sử dụng dấu thời gian đơn giản để cho thấy sự mờ nhạt. Khi xung đột không thể được giải quyết tự động, cả hai bản sao của dữ liệu được gửi đến khách hàng. Xung đột dữ liệu được gửi tới máy khách có thể xảy ra trong trường hợp sau:
Khách hàng 1 ghi vào bản sao A 'Adam: {like: Cheese}'.
-
Bản sao A sao chép dữ liệu đến bản sao B.
-
Khách hàng 1 cập nhật dữ liệu trên bản sao A đến 'Adam: {thích: Cheese, hates: sunlight}'.
-
Tại thời điểm này, bản sao A không có đủ thời gian để sao chép dữ liệu mới nhất vào bản sao B.
Khách hàng 2 cập nhật dữ liệu trên bản sao B đến 'Adam: {thích: Chó, ghét: kangaroos}'.
-
Tại thời điểm này, bản sao A và bản sao B đang trong xung đột và các cụm cơ sở dữ liệu không thể tự động giải quyết sự khác biệt.
Cơ chế thay thế là sử dụng tem thời gian và tin tưởng chúng để chỉ ra dữ liệu mới nhất. Trong tình huống như vậy, thông thường cho ứng dụng để kiểm tra xem tem thời gian đọc giá trị mới nhất trước khi cập nhật giá trị.
kiểm tra cho
kiểm tra và đặt cơ chế, mà về cơ bản có nghĩa là 'Nếu phiên bản mới nhất vẫn là phiên bản 2, sau đó lưu phiên bản của tôi 3'. Cơ chế này đôi khi được gọi là viết tắt của đọc dữ liệu phù hợp (RMU) hoặc đọc so khớp viết (RMW). Cơ chế này là cơ chế mặc định được sử dụng bởi Oracle NoSQL, Redis, Riak và Voldemort.