Mới đây, Yandex đã thông báo phát hành mã nguồn hệ quản trị cơ sở dữ liệu "YDB" của mình , hệ thống này hỗ trợ ngôn ngữ SQL và các giao dịch ACID.
Hệ quản trị cơ sở dữ liệu (DBMS) này được xây dựng từ đầu và ban đầu được phát triển với mục tiêu đảm bảo khả năng chịu lỗi , tự động phục hồi sau sự cố và khả năng mở rộng. Điều đáng chú ý là Yandex đã đưa vào vận hành các cụm YDB, bao gồm hơn 10 nút, lưu trữ hàng trăm petabyte dữ liệu và xử lý hàng triệu giao dịch phân tán mỗi giây.
Những điểm mới chính của YDB
Một trong những tính năng chính của YDB là việc sử dụng mô hình dữ liệu quan hệ với các bảng. YQL ( Ngôn ngữ truy vấn YDB) được sử dụng để truy vấn và định nghĩa lược đồ dữ liệu; nó là một phương ngữ của SQL được điều chỉnh để làm việc với các cơ sở dữ liệu phân tán lớn . Khi tạo lược đồ lưu trữ, nó hỗ trợ nhóm các bảng theo dạng cây, tương tự như các thư mục trong hệ thống tệp. API được cung cấp để làm việc với dữ liệu ở định dạng JSON.
Một điểm đáng chú ý khác là khả năng tạo ra các cấu hình chịu lỗi , cho phép hệ thống tiếp tục hoạt động ngay cả khi ổ đĩa, các nút, giá đỡ và thậm chí cả các trung tâm dữ liệu riêng lẻ gặp sự cố. YDB hỗ trợ triển khai và sao chép đồng bộ trên ba vùng khả dụng trong khi vẫn duy trì trạng thái hoạt động ổn định của cụm máy chủ trong trường hợp một vùng bị lỗi.
Khả năng tương thích với việc truy cập dữ liệu thông qua các truy vấn quét, được thiết kế để thực hiện các truy vấn phân tích tùy chỉnh trên cơ sở dữ liệu, được thực thi ở chế độ chỉ đọc và trả về luồng grpc.
Hơn nữa, nó còn nổi bật nhờ khả năng lưu trữ dữ liệu trực tiếp trên các thiết bị khối bằng cách sử dụng thành phần PDisk gốc và lớp VDisk. Bên cạnh VDisk, DSProxy còn chạy một công cụ phân tích tính khả dụng và hiệu suất của ổ đĩa để loại bỏ chúng nếu phát hiện thấy sự cố.
Các tính năng đáng chú ý khác bao gồm:
- Một kiến trúc linh hoạt cho phép bạn xây dựng các dịch vụ khác nhau trên YDB, ngay đến các thiết bị khối ảo và các hàng đợi liên tục. Tính phù hợp với các loại khối lượng công việc khác nhau: OLTP và OLAP (truy vấn phân tích).
- Hỗ trợ cho nhiều người dùng (nhiều người thuê) và cấu hình không máy chủ.
- Khả năng xác thực khách hàng. Người dùng có thể tạo các cụm và cơ sở dữ liệu ảo của riêng họ trên một cơ sở hạ tầng được chia sẻ chung, xem xét mức tiêu thụ tài nguyên về số lượng yêu cầu và kích thước dữ liệu hoặc bằng cách thuê / dự trữ một số tài nguyên máy tính và không gian lưu trữ.
- Khả năng điều chỉnh thời gian sử dụng hữu ích của các bản ghi để tự động xóa dữ liệu lỗi thời.
- Tương tác với DBMS và gửi yêu cầu được thực hiện bằng giao diện dòng lệnh, giao diện web tích hợp hoặc YDB SDK, cung cấp thư viện cho C ++, C # (.NET), Go, Java, Node.js, PHP và Python.
- Tự động phục hồi từ các lỗi với độ trễ tối thiểu đối với các ứng dụng và tự động duy trì khả năng dự phòng được chỉ định khi lưu trữ dữ liệu.
- Tự động tạo chỉ mục trên khóa chính và khả năng xác định chỉ mục phụ để nâng cao hiệu quả truy cập cột tùy ý.
- Khả năng mở rộng theo chiều ngang. Khi tải và kích thước của dữ liệu được lưu trữ tăng lên, cụm có thể được mở rộng đơn giản bằng cách kết nối các nút mới. Các tầng máy tính và lưu trữ là riêng biệt, cho phép bạn chia tỷ lệ máy tính và lưu trữ một cách riêng biệt. Bản thân DBMS giám sát sự phân bố đồng đều của dữ liệu và tải, có tính đến các tài nguyên phần cứng có sẵn. Có thể triển khai các cấu hình phân tán theo địa lý bao gồm nhiều trung tâm dữ liệu ở các khu vực khác nhau trên thế giới.
- Hỗ trợ mô hình nhất quán mạnh mẽ và các giao dịch ACID khi xử lý các truy vấn trải dài trên nhiều nút và bảng. Để cải thiện hiệu suất, bạn có thể tắt tính năng kiểm tra tính nhất quán một cách có chọn lọc.
- Tự động sao chép dữ liệu, phân vùng tự động (phân vùng, phân vùng) khi kích thước hoặc tải tăng lên, đồng thời tự động cân bằng tải và dữ liệu giữa các nút.
Cuối cùng, cần lưu ý rằng YDB được sử dụng trong các dự án của Yandex, mã nguồn được viết bằng C/C++ và được phân phối theo giấy phép Apache 2.0. Bạn có thể tìm thấy mã nguồn, cũng như thông tin chi tiết hơn về nó, tại liên kết sau.