Mọi hệ thống cơ sở dữ liệu đều có một thành phần cấu trúc chịu trách nhiệm duy trì cách dữ liệu được lưu trữ và phục vụ cả trong bộ nhớ và đĩa. Điều này thường được gọi là một công cụ lưu trữ. Thông thường hơn khi đánh giá kiến trúc của cơ sở dữ liệu hoạt động, các nhà phát triển tính đến các yếu tố đầu tiên như mô hình hóa dữ liệu, giảm độ trễ, cải thiện hoạt động thông lượng, tính nhất quán của dữ liệu, khả năng mở rộng dễ dàng và khả năng chịu lỗi tối thiểu. Mặc dù vậy, người ta cần phải có kiến thức chi tiết và nâng cao về công cụ lưu trữ cơ bản để điều chỉnh tốt hơn nhằm phân phối các yếu tố được đánh dấu một cách hiệu quả.
Một chu trình đơn giản của một ứng dụng vào hệ thống db được minh họa dưới đây ...
Ví dụ về kiến trúc ứng dụng phổ biếnCông cụ lưu trữ WiredTiger
MongoDB chủ yếu hỗ trợ 3 công cụ lưu trữ có hiệu suất khác nhau phù hợp với một số khối lượng công việc cụ thể. Các công cụ lưu trữ là:
- Công cụ lưu trữ WiredTiger
- Công cụ lưu trữ trong bộ nhớ
- Công cụ lưu trữ MMAPv1
Công cụ lưu trữ WiredTiger có cả cấu hình của Công cụ dựa trên cây B và Công cụ dựa trên cây hợp nhất có cấu trúc nhật ký.
Công cụ dựa trên cây B
Đây là một trong những công cụ lưu trữ cổ xưa mà từ đó các thiết lập phức tạp khác bắt nguồn từ đó. Nó là một cấu trúc dữ liệu cây tự cân bằng đảm bảo sắp xếp dữ liệu và cho phép tìm kiếm, truy cập tuần tự, chèn và xóa theo cách logarit. Đó là lưu trữ dựa trên hàng sao cho mỗi hàng được coi là một bản ghi duy nhất trong cơ sở dữ liệu
Công cụ lưu trữ B-Tree
- Đọc thông lượng cao và độ trễ thấp. B-Cây có xu hướng phát triển rộng và nông nên rất ít nút bị cắt ngang.
- Giữ các khóa theo thứ tự được sắp xếp để duyệt tuần tự và các chỉ mục được cân bằng với một thuật toán đệ quy.
- Các nút lưu trữ bên trong luôn được giữ đầy ít nhất một nửa, nói chung là giảm lãng phí.
- Dễ dàng xử lý một số lượng lớn các lần chèn và xóa trong thời gian ngắn.
- Lập chỉ mục phân cấp được sử dụng với mục đích giảm số lần đọc đĩa.
- Tăng tốc độ chèn và xóa thông qua việc sử dụng các khối đầy đủ một phần.
Hạn chế của công cụ lưu trữ B-Tree
- Hiệu suất ghi kém do yêu cầu đảm bảo cấu trúc dữ liệu có thứ tự tốt với các lần ghi ngẫu nhiên. Ghi ngẫu nhiên đắt hơn ghi tuần tự vào bộ nhớ.
- Sẵn sàng sửa đổi-ghi hình phạt của toàn bộ khối ngay cả đối với một cập nhật nhỏ cho một hàng trong khối.
Công cụ dựa trên cây hợp nhất có cấu trúc nhật ký
Do hiệu suất ghi kém của B-Tree Based Engine, các nhà phát triển đã phải tìm ra cách để đối phó với các bộ dữ liệu lớn hơn cho DBMS. Do đó, Công cụ dựa trên cây hợp nhất có cấu trúc nhật ký (LSM Tree) đã được thành lập để cải thiện hiệu suất cho quyền truy cập được lập chỉ mục vào các tệp có khối lượng ghi cao trong một thời gian dài. Trong trường hợp này, các lần ghi ngẫu nhiên ở giai đoạn đầu tiên của bộ nhớ xếp tầng được chuyển thành các lần ghi tuần tự ở thành phần đầu tiên dựa trên đĩa.
Điểm mạnh của Công cụ lưu trữ cây LSM
- Khả năng ghi tuần tự nhanh giúp tăng cường khả năng xử lý nhanh chóng các dữ liệu lớn đang phát triển nhanh.
- Rất thích hợp cho việc lưu trữ theo từng cấp, do đó mang lại cho các tổ chức sự lựa chọn tốt hơn về chi phí và hiệu suất. Trong trường hợp này, SSD dựa trên flash mang lại hiệu suất tuyệt vời.
- Hiệu quả nén và lưu trữ tốt hơn, do đó tiết kiệm không gian lưu trữ và tăng cường bộ nhớ gần như đầy đủ
- Dữ liệu luôn có sẵn để truy vấn ngay lập tức.
- Việc chèn rất nhanh.
Hạn chế của công cụ lưu trữ B-Tree
Tiêu thụ nhiều bộ nhớ hơn so với B-Tree trong các hoạt động đọc do quá trình đọc và khuếch đại không gian. Tuy nhiên, một số phương pháp tiếp cận như bộ lọc bloom đã giảm thiểu hiệu ứng này trong thực tế, do đó số lượng tệp được kiểm tra trong một truy vấn điểm được giảm xuống.
Công nghệ WiredTiger được thiết kế theo cách sử dụng cả lợi thế của B-Tree và LSM, làm cho nó trở nên tinh vi và là công cụ lưu trữ tốt nhất cho MongoDB. CNTT thực sự là công cụ lưu trữ mặc định của MongoDB.
Vài người trở thành MongoDB DBA - Đưa MongoDB vào Sản xuất Tìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng MongoDBDownload miễn phíKiến trúc công cụ lưu trữ WiredTiger
Như đã đề cập ở trên, nó liên quan đến khái niệm về hai công cụ lưu trữ cơ bản là công cụ B-Tree và LSM Tree, do đó nó là công cụ lưu trữ điều khiển đồng thời đa vũ trụ (MVCC). Giá trị của cả hai kết hợp cho phép hệ thống xem ảnh chụp nhanh của cơ sở dữ liệu tại thời điểm nó truy cập vào một bộ sưu tập. Các điểm kiểm tra được thiết lập sao cho một chế độ xem dữ liệu nhất quán được ghi vào đĩa giữa các điểm kiểm tra. Trong trường hợp có sự cố giữa các điểm kiểm tra, có thể dễ dàng khôi phục bằng các điểm kiểm tra này hoặc đúng hơn, ngay cả khi không có điểm kiểm tra nào cho dữ liệu, người ta có thể khôi phục nó từ các tệp nhật ký đĩa.
Sử dụng rộng rãi bộ nhớ cache thay vì đĩa để tăng cường độ trễ thấp. Công cụ lưu trữ WiredTiger chủ yếu dựa vào bộ đệm trang của hệ điều hành để dữ liệu nén được tìm nạp mà không liên quan đến đĩa. Bên cạnh đó, dữ liệu ít được sử dụng gần đây nhất sẽ bị xóa khỏi RAM, giúp tiết kiệm không gian hơn cho bộ nhớ đệm.
Khái niệm lưu trữ B-Tree mang lại hiệu suất đọc cao và ghi tốt với mức sử dụng CPU thấp. Nó cũng có triển khai khóa cấp độ tài liệu cho phép khối lượng công việc đồng thời cao và do đó, sự đồng thời này tạo điều kiện cho máy chủ tận dụng nhiều CPU lõi. Nhìn chung, tất cả các luận án đều nâng cao khả năng mở rộng cao của cơ sở dữ liệu.
Phiên bản dành cho doanh nghiệp hỗ trợ mã hóa trên đĩa cho công cụ lưu trữ WiredTiger, đây là một tính năng giúp cải thiện đáng kể bảo mật dữ liệu.
Công cụ lưu trữ WiredTiger cho phép ghi nhật ký trước để đảm bảo khôi phục sự cố tự động và giúp ghi lâu bền.
Ưu điểm của Công cụ lưu trữ WiredTiger
- Lưu trữ hiệu quả nhờ nhiều công nghệ nén như nén Snapp, gzip và prefix.
- Nó có khả năng mở rộng cao với việc đọc và ghi đồng thời. Điều này cuối cùng đã cải thiện về thông lượng và hiệu suất cơ sở dữ liệu chung.
- Đảm bảo độ bền của dữ liệu bằng cách ghi nhật ký và sử dụng các điểm kiểm tra.
- Sử dụng bộ nhớ tối ưu. WiredTiger sử dụng cả bộ đệm ẩn bên trong và bộ đệm ẩn hệ thống tệp.
- Với bộ đệm ẩn hệ thống tệp, MongoDB có thể dễ dàng sử dụng bộ nhớ trống không được bộ nhớ đệm WiredTiger sử dụng.
Sự thất bại của công cụ lưu trữ WiredTiger
Khó khăn trong việc cập nhật dữ liệu. Lược đồ đồng thời ngăn chặn các cập nhật tại chỗ để cập nhật giá trị trường trong tài liệu sẽ ghi lại toàn bộ tài liệu.
Kết luận
Công cụ lưu trữ WiredTiger tích hợp các khái niệm từ hai công cụ lưu trữ chính là công cụ lưu trữ cây B-Tree và LSM để đạt được hiệu suất tối đa và tối ưu. Cân nhắc những lợi thế từ cả hai trường hợp và sử dụng chung chúng làm cho WiredTiger trở thành một công cụ lưu trữ mục đích chung. Vì lý do này, trong các phiên bản hiện tại của MongoDB, nó là công cụ lưu trữ mặc định. Điều này ngụ ý rằng nếu bạn thực sự không có lý do chính đáng để phản đối thì đó là cách tốt nhất cho dữ liệu của bạn. Tuy nhiên, lựa chọn công cụ lưu trữ chủ yếu dựa vào trường hợp sử dụng dữ liệu của bạn hoặc đúng hơn là nơi WiredTiger không thể đáp ứng mong đợi của bạn. Nói chung, đây là công cụ lưu trữ mặc định tốt nhất.