Tích hợp RocksDB trong ArangoDB

Bản phát hành mới của ArangoDB 3.2 sắp ra mắt và sẽ bao gồm một số cải tiến lớn như xử lý đồ thị phân tán với Pregel hoặc một công cụ xuất mạnh mẽ. Nhưng quan trọng nhất, chúng tôi đã tích hợp RocksDB của Facebook làm công cụ lưu trữ có thể cắm đầu tiên trong ArangoDB. Với RocksDB, bạn sẽ có thể sử dụng nhiều dữ liệu trong ArangoDB phù hợp với đĩa của mình.
Vì đây là một thay đổi quan trọng và cộng đồng có nhiều câu hỏi, chúng tôi muốn chia sẻ một số câu trả lời cho những câu hỏi phổ biến nhất. Vui lòng tìm chúng bên dưới.
Hỏi: Tôi có thể vượt quá giới hạn RAM không?
A: Vâng. Bằng cách xác định RocksDB làm công cụ lưu trữ, bạn sẽ có thể làm việc với nhiều dữ liệu phù hợp trên đĩa của mình.
Q: Hành vi khóa với RocksDB trong ArangoDB là gì?
Đ: Với RocksDB làm công cụ lưu trữ của bạn, khóa ở cấp tài liệu khi ghi và không khóa khi đọc. Việc ghi đồng thời các tài liệu giống nhau sẽ gây ra xung đột ghi-ghi sẽ được truyền sang mã gọi, vì vậy người dùng có thể thử lại các thao tác khi được yêu cầu.
H: Khi bạn nói "Việc ghi đồng thời các tài liệu giống nhau sẽ gây ra xung đột ghi-ghi sẽ được truyền tới mã gọi", điều đó có nghĩa là hành vi sẽ khác với cách hiện tại không? Sẽ không viết cố gắng để có được một khóa trên tài liệu trước tiên?
A: Có, điều đó có nghĩa là hành vi sẽ khác so với hiện tại. Công cụ (tệp MMAP) hiện tại có các khóa cấp bộ sưu tập, do đó không thể xảy ra xung đột ghi-ghi . Động cơ RocksDB có ổ khóa tài liệu cấp, vì vậy write-ghi mâu thuẫn là có thể.
Hãy xem xét ví dụ sau về hai giao dịch T1 và T2 đều cố gắng viết một tài liệu trong tập hợp “c.”
Trong công cụ (MMFiles) cũ, các giao dịch này sẽ được tuần tự hóa. Ví dụ:
T1 bắt đầu
T1 viết tài liệu “a” trong tập hợp “c”
T1 cam kết
T2 bắt đầu
T2 viết tài liệu “a” trong tập hợp “c”
T2 cam kết
Vì vậy, không có xung đột viết ở đây.
Trong công cụ RocksDB, các giao dịch có thể chạy song song, nhưng khi chúng sửa đổi cùng một tài liệu, nó cần được khóa để tránh bị mất cập nhật. Lập lịch sau đây sẽ gây ra xung đột ghi-ghi:
T1 bắt đầu
T2 bắt đầu
T1 viết tài liệu “a” trong tập hợp “c”
T2 viết tài liệu “a” trong tập hợp “c”
Tại đây, một trong các giao dịch (T2) sẽ bị hủy bỏ để ngăn cập nhật bị mất không được chú ý. Việc ghi đồng thời các tài liệu giống nhau sẽ gây ra xung đột ghi-ghi sẽ được truyền sang mã gọi, vì vậy người dùng có thể thử lại các thao tác khi được yêu cầu.
H: Khi sử dụng RocksDB làm công cụ lưu trữ, tôi có cần một đĩa / SSD nhanh nếu một chỉ mục dựa trên đĩa không?
A: Sẽ có lợi khi sử dụng bộ nhớ nhanh. Điều này đúng đối với công cụ lưu trữ tệp được ánh xạ bộ nhớ cũng như đối với công cụ lưu trữ dựa trên RocksDB.
Hỏi: Tôi có thể chọn cách lưu trữ các bộ sưu tập khác nhau hay sẽ là lựa chọn cho mỗi cơ sở dữ liệu?
Đó là sự lựa chọn cho mỗi máy chủ / cụm. Chưa thể kết hợp các chế độ hoặc sử dụng các công cụ lưu trữ khác nhau trong cùng một phiên bản hoặc cụm ArangoDB.
H: Tôi có thể chuyển từ RocksDB sang tệp ánh xạ bộ nhớ với bộ sưu tập hoặc cơ sở dữ liệu không?
Đó là sự lựa chọn cho mỗi máy chủ / cụm. Sự lựa chọn phải được thực hiện trước khi máy chủ đầu tiên bắt đầu. Lần khởi động máy chủ đầu tiên sẽ lưu lựa chọn công cụ lưu trữ trong một tệp trên đĩa và tệp này được xác thực trong tất cả các lần khởi động lại. Nếu công cụ lưu trữ phải được thay đổi sau lần thay đổi đầu tiên, dữ liệu từ cá thể ArangoDB có thể được kết xuất với arangodump và sau đó ArangoDB có thể được khởi động lại với một thư mục cơ sở dữ liệu trống và một công cụ lưu trữ khác. Dữ liệu do arangodump tạo ra sau đó có thể được tải vào ArangoDB với arangorestore.
H: Hiện tại, các chỉ mục luôn lưu trữ trên đĩa hay chỉ các loại chỉ mục tồn tại?
A: Nếu bạn chọn RocksDB làm công cụ lưu trữ của mình, tất cả các chỉ mục sẽ được lưu giữ trên đĩa.
H: Tôi đang sử dụng Microsoft Azure, nơi các máy ảo có đĩa SSD cục bộ rất nhanh nhưng không may là "tạm thời" (nghĩa là chúng có thể không sống sót sau khi khởi động lại), so với các đĩa gắn mạng chậm hơn nhưng bền bỉ (cũng có thể là SSD ). Có cách nào để tận dụng đĩa cục bộ không? Tôi đang nghĩ về điều gì đó giống như sử dụng đĩa cục bộ cho các truy vấn nhanh nhưng dữ liệu vẫn được lưu vào đĩa được gắn mạng.
Nói chung, RocksDB cho phép chỉ định các thư mục dữ liệu khác nhau cho các cấp độ khác nhau của cơ sở dữ liệu. Dữ liệu ở cấp độ thấp hơn trong dữ liệu mới hơn, vì vậy, nói chung, trước tiên có thể ghi dữ liệu cấp thấp vào SSD và yêu cầu RocksDB di chuyển dữ liệu đó sang HDD chậm hơn hoặc các đĩa gắn mạng khi nó được di chuyển lên các cấp cao hơn. Lưu ý rằng đây là một tùy chọn mà RocksDB cung cấp nhưng ArangoDB chưa khai thác. Nói chung, chúng tôi không nghĩ rằng "đọc từ SSD nhanh so với đọc từ đĩa chậm" có thể được thực hiện trên cơ sở mỗi truy vấn, vì một truy vấn có thể chạm vào dữ liệu tùy ý. Nhưng dữ liệu gần đây hoặc dữ liệu được truy cập thường xuyên sẽ có khả năng nằm trong bộ nhớ cache khối trong bộ nhớ của RocksDB.
Có thể bạn quan tâm
