Apache Cassandra 4.0 DBMS có sẵn

Quỹ phần mềm Apache đã giới thiệu việc phát hành DBMS Apache Cassandra 4.0 phân tán, thuộc loại hệ thống noSQL và được thiết kế để tạo ra khả năng mở rộng cao và lưu trữ đáng tin cậy đối với lượng dữ liệu khổng lồ được lưu trữ dưới dạng một mảng kết hợp (băm). Bản phát hành Cassandra 4.0 được coi là đã sẵn sàng để triển khai sản xuất và đã được thử nghiệm trên cơ sở hạ tầng của Amazon, Apple, DataStax, Instaclustr, iland và Netflix với các cụm hơn 1000 nút. Mã dự án được viết bằng Java và được phân phối theo giấy phép Apache 2.0.

Cassandra DBMS ban đầu được phát triển bởi Facebook và được chuyển giao vào năm 2009 dưới sự bảo trợ của Quỹ Apache. Các giải pháp công nghiệp dựa trên Cassandra đã được triển khai để cung cấp năng lượng cho các dịch vụ của các công ty như Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit và Twitter. Ví dụ: cơ sở hạ tầng lưu trữ dựa trên Apache Cassandra do Apple triển khai có hơn một nghìn cụm, bao gồm 160 nghìn nút và lưu trữ hơn 100 petabyte dữ liệu. Huawei sử dụng hơn 300 cụm Apache Cassandra, bao gồm 30 nghìn nút và Netflix sử dụng hơn 100 cụm, bao gồm 10 nghìn nút và xử lý hơn một nghìn tỷ yêu cầu mỗi ngày.

Cassandra DBMS kết hợp hệ thống băm Dynamo được phân phối đầy đủ, cung cấp khả năng mở rộng gần như tuyến tính khi khối lượng dữ liệu tăng lên. Cassandra sử dụng mô hình lưu trữ dữ liệu dựa trên họ cột (ColumnFamily), khác với các hệ thống như memcachedb vốn chỉ lưu trữ dữ liệu trong chuỗi khóa/giá trị nhờ khả năng tổ chức lưu trữ các giá trị băm với nhiều cấp độ lồng nhau. Để đơn giản hóa việc tương tác với cơ sở dữ liệu, ngôn ngữ truy vấn có cấu trúc CQL (Ngôn ngữ truy vấn Cassandra) được hỗ trợ, gợi nhớ đến SQL nhưng bị giảm bớt chức năng. Các tính năng bao gồm hỗ trợ cho không gian tên và họ cột cũng như tạo chỉ mục bằng cách sử dụng biểu thức “TẠO CHỈ SỐ”.

DBMS cho phép bạn tạo bộ lưu trữ chống lỗi: dữ liệu được đặt trong cơ sở dữ liệu được tự động sao chép sang một số nút của mạng phân tán, có thể trải rộng trên các trung tâm dữ liệu khác nhau. Khi một nút bị lỗi, các nút khác sẽ nhanh chóng xử lý các chức năng của nó. Việc thêm các nút mới vào cụm và cập nhật phiên bản Cassandra được thực hiện nhanh chóng mà không cần can thiệp thủ công bổ sung hoặc cấu hình lại các nút khác. Trình điều khiển có hỗ trợ CQL được chuẩn bị cho Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ và JavaScript (Node.js).

Những đổi mới chính:

  • Cải thiện hiệu suất và khả năng mở rộng. Hiệu quả trao đổi dữ liệu ở định dạng SSTable (Bảng chuỗi được sắp xếp) giữa các nút đã được cải thiện. Giao thức nhắn tin quốc tế đã được tối ưu hóa. Tốc độ truyền luồng dữ liệu giữa các nút đã tăng lên gấp 5 lần (chủ yếu do sử dụng kỹ thuật Zero Copy và truyền toàn bộ SSTable), đồng thời thông lượng cho các hoạt động đọc và ghi đã tăng lên 25%. Quá trình phục hồi gia tăng đã được tối ưu hóa. Độ trễ do tạm dừng thu gom rác giảm xuống còn vài mili giây.
  • Đã thêm hỗ trợ cho nhật ký kiểm tra cho phép bạn theo dõi các hoạt động xác thực người dùng và tất cả các truy vấn CQL đã thực hiện.
  • Đã thêm khả năng duy trì nhật ký yêu cầu nhị phân đầy đủ, cho phép bạn lưu tất cả lưu lượng yêu cầu và phản hồi. Để quản lý, các lệnh “nodetool Enablefullquerylog|disablefullquerylog|resetfullquerylog” được đề xuất và tiện ích fqltool được cung cấp để phân tích nhật ký. Các lệnh được cung cấp để chuyển đổi nhật ký thành dạng có thể đọc được (Dump), so sánh các lát hoạt động (So sánh) và thực hiện lại (Phát lại) để phân tích tái tạo các điều kiện vốn có trong tải thực.
  • Đã thêm hỗ trợ cho các bảng ảo không phản ánh dữ liệu được lưu trữ trong SSTables mà phản ánh thông tin xuất ra qua API (số liệu hiệu suất, thông tin cài đặt, nội dung bộ đệm, thông tin về máy khách được kết nối, v.v.).
  • Hiệu quả lưu trữ dữ liệu nén đã được cải thiện, giảm mức tiêu thụ dung lượng ổ đĩa và cải thiện hiệu suất đọc.
  • Dữ liệu liên quan đến không gian phím hệ thống (system.*) hiện được đặt trong thư mục đầu tiên theo mặc định thay vì được phân phối trên tất cả các thư mục dữ liệu, điều này cho phép nút vẫn hoạt động nếu một trong các đĩa bổ sung bị lỗi.
  • Đã thêm hỗ trợ thử nghiệm cho Sao chép tạm thời và Đại biểu giá rẻ. Bản sao tạm thời không lưu trữ tất cả dữ liệu và sử dụng khôi phục gia tăng để phù hợp với bản sao đầy đủ. Số đại biểu ít thực hiện tối ưu hóa ghi trong đó không có thao tác ghi nào được thực hiện đối với các bản sao tạm thời cho đến khi có đủ bộ bản sao đầy đủ.
  • Đã thêm hỗ trợ thử nghiệm cho Java 11.
  • Đã thêm tùy chọn thử nghiệm để so sánh tất cả các Cây Merkle. Ví dụ: việc bật tùy chọn trên cụm 3 nút trong đó có hai bản sao giống hệt nhau và một bản sao cũ sẽ dẫn đến việc cập nhật bản sao cũ chỉ bằng một thao tác sao chép của bản sao hiện tại.
  • Đã thêm các chức năng mới currentTimestamp, currentDate, currentTime và currentTimeUUID.
  • Đã thêm hỗ trợ cho các phép tính số học trong truy vấn CQL.
  • Khả năng thực hiện các phép tính số học giữa dữ liệu với các loại “dấu thời gian”/”ngày” và “thời lượng” được cung cấp.
  • Đã thêm chế độ xem trước các luồng dữ liệu cần thiết để khôi phục (nodetool repair —preview) và khả năng kiểm tra tính toàn vẹn của dữ liệu đang được khôi phục (nodetool repair —validate).
  • Các truy vấn CHỌN hiện có khả năng xử lý các phần tử Bản đồ và Tập hợp.
  • Đã thêm hỗ trợ để song song hóa giai đoạn xây dựng ban đầu của các chế độ xem cụ thể hóa (cassandra.yaml:concurrent_materialized_view_builders).
  • Lệnh "nodetool cfstats" đã thêm hỗ trợ sắp xếp theo số liệu nhất định và giới hạn số lượng hàng được hiển thị.
  • Cài đặt được cung cấp để giới hạn kết nối của người dùng chỉ với một số trung tâm dữ liệu nhất định.
  • Đã thêm khả năng giới hạn cường độ (giới hạn tốc độ) của các hoạt động tạo và xóa ảnh chụp nhanh.
  • cqlsh và cqlshlib hiện hỗ trợ Python 3 (Python 2.7 vẫn được hỗ trợ).
  • Hỗ trợ cho nền tảng Windows đã bị ngừng. Để chạy Cassandra trên Windows, bạn nên sử dụng các môi trường Linux được tạo trên cơ sở hệ thống con WSL2 (Hệ thống con Windows cho Linux 2) hoặc các hệ thống ảo hóa.



Nguồn: opennet.ru

Thêm một lời nhận xét