Cassandra Bộ sưu tập: Đặt, Danh sách & Bản đồ trong CQL với Ví dụ

⚡ Tóm tắt thông minh

Cassandra Các tập hợp lưu trữ nhiều giá trị trong một cột duy nhất bằng cách sử dụng các kiểu dữ liệu set, list và map. Trang này giải thích từng kiểu dữ liệu, cú pháp CQL để tạo và điền dữ liệu vào chúng, cách cập nhật các phần tử và giới hạn kích thước quyết định khi nào tập hợp không phải là lựa chọn phù hợp.

  • 📦 Ba loại: Tập hợp (Set) chứa các giá trị duy nhất không có thứ tự, danh sách (List) giữ nguyên thứ tự chèn, và bản đồ (Map) lưu trữ các cặp khóa và giá trị.
  • 🔤 Thiết lập hành vi: Các phần tử được lưu trữ theo thứ tự và các phần tử trùng lặp sẽ tự động bị loại bỏ.
  • 🔢 Lưu ý khi liệt kê: Thứ tự được giữ nguyên, nhưng các thao tác thêm vào đầu và thêm vào chỉ mục yêu cầu đọc trước khi ghi.
  • 4 Sử dụng bản đồ: Một map phù hợp với các thuộc tính mà khóa của chúng chưa được biết khi thiết kế lược đồ.
  • 📏 Giới hạn kích thước: Hãy giữ cho các bộ sưu tập nhỏ gọn; toàn bộ bộ sưu tập sẽ được đọc ngay cả khi chỉ cần một phần tử.
  • 🧊 Tùy chọn đóng băng: Một tập hợp dữ liệu bị đóng băng được lưu trữ dưới dạng một giá trị duy nhất và phải được thay thế hoàn toàn.

Cassandra Bản đồ danh sách bộ sưu tập

Những gì đang có Cassandra Bộ sưu tập?

Cassandra bộ sưu tập là một cách tốt để xử lý các nhiệm vụ. Nhiều phần tử có thể được lưu trữ trong bộ sưu tập. Có những hạn chế trong Cassandra bộ sưu tập.

  • Cột kiểu tập hợp không thể lưu trữ nhiều hơn 64 KB dữ liệu trong một giá trị duy nhất.
  • Hãy giữ cho tập hợp có kích thước nhỏ để tránh phát sinh chi phí khi truy vấn tập hợp, vì toàn bộ tập hợp sẽ được đọc ngay cả khi chỉ cần một phần tử.
  • Việc lưu trữ nhiều hơn 64 KB có nghĩa là chỉ có 64 KB đầu tiên mới có thể được truy vấn, dẫn đến mất dữ liệu.
  • Một tập hợp dữ liệu chưa đóng băng chỉ giới hạn ở khoảng 65,535 phần tử, và mỗi phần tử được đọc cùng nhau như một đơn vị.

Những giới hạn này chỉ ra một quy tắc: các tập hợp phù hợp với một số thuộc tính được gắn vào một hàng, chứ không phải một danh sách mở rộng theo thời gian sử dụng. Bất cứ thứ gì tiếp tục tăng lên đều thuộc về các cột nhóm trong bảng riêng của nó.

các loại Cassandra Các hạng mục

Chủ yếu có ba loại bộ sưu tập Cassandra hỗ trợ:

  1. Thiết lập
  2. Danh sách
  3. Bản đồ

Cassandra Đặt bộ sưu tập

Tập hợp lưu trữ nhóm phần tử trả về các phần tử được sắp xếp khi truy vấn.

cú pháp

Sau đây là cú pháp của bộ sưu tập Set lưu trữ nhiều địa chỉ email của giáo viên.

CREATE TABLE University.Teacher (
    id int,
    Name text,
    Email set<text>,
    PRIMARY KEY (id)
);

Ví dụ

Đây là ảnh chụp nhanh trong đó bảng “Giáo viên” được tạo với cột “Email” làm bộ sưu tập.

Ví dụ về Cassandra Đặt bộ sưu tập

Đây là ảnh chụp nhanh nơi dữ liệu đang được chèn vào bộ sưu tập.

Ví dụ về Cassandra Đặt bộ sưu tập

INSERT INTO University.Teacher (id, Name, Email)
VALUES (1, 'Guru99', {'abc@gmail.com', 'xyz@hotmail.com'});

Các phần tử riêng lẻ được thêm hoặc xóa mà không cần viết lại toàn bộ tập hợp, đây là lợi thế chính của việc không đóng băng một tập hợp dữ liệu.

UPDATE University.Teacher SET Email = Email + {'new@guru99.com'} WHERE id = 1;
UPDATE University.Teacher SET Email = Email - {'xyz@hotmail.com'} WHERE id = 1;

Cassandra Bộ sưu tập danh sách

Khi thứ tự của các phần tử quan trọng, danh sách sẽ được sử dụng.

Ví dụ

Đây là ảnh chụp màn hình cho thấy cột "khóa học" thuộc loại danh sách được thêm vào bảng "Giáo viên".

Ví dụ về Cassandra Bộ sưu tập danh sách

ALTER TABLE University.Teacher ADD coursenames list<text>;

Đây là ảnh chụp nhanh nơi dữ liệu đang được chèn vào cột “tên khóa học”.

Ví dụ về Cassandra Bộ sưu tập danh sách

INSERT INTO University.Teacher (id, Name, Email, coursenames)
VALUES (2, 'Hamilton', {'hamilton@hotmail.com'}, ['Data Science']);

Đây là ảnh chụp nhanh hiển thị trạng thái cơ sở dữ liệu hiện tại sau khi chèn.

Cassandra Ví dụ về bộ sưu tập danh sách

Các phần tử có thể được thêm vào đầu hoặc cuối, mặc dù việc thêm vào đầu và cập nhật theo chỉ mục đều yêu cầu Cassandra Việc đọc danh sách trước khiến chúng chậm hơn so với việc thêm vào cuối danh sách.

UPDATE University.Teacher SET coursenames = coursenames + ['Machine Learning'] WHERE id = 2;
UPDATE University.Teacher SET coursenames = ['Statistics'] + coursenames WHERE id = 2;

Cassandra Bộ sưu tập bản đồ

Bản đồ là loại bộ sưu tập được sử dụng để lưu trữ các cặp giá trị khóa. Đúng như tên gọi của nó, nó ánh xạ thứ này sang thứ khác.

Ví dụ: nếu bạn muốn lưu tên khóa học cùng với tên khóa học tiên quyết, bạn có thể sử dụng bộ sưu tập bản đồ.

Ví dụ

Đây là ảnh chụp nhanh nơi loại bản đồ được tạo cho tên khóa học và tên khóa học tiên quyết của nó.

Ví dụ về Cassandra Bộ sưu tập bản đồ

CREATE TABLE University.Course (
    id int,
    prereq map<text, text>,
    PRIMARY KEY (id)
);

Đây là ảnh chụp nhanh nơi dữ liệu được chèn vào loại bộ sưu tập bản đồ.

Ví dụ về Cassandra Bộ sưu tập bản đồ

INSERT INTO University.Course (id, prereq)
VALUES (1, {'DataScience': 'Database', 'Neural Network': 'Artificial Intelligence'});

Một mục duy nhất được thiết lập hoặc xóa mà không ảnh hưởng đến phần còn lại của bản đồ.

UPDATE University.Course SET prereq['Robotics'] = 'Linear Algebra' WHERE id = 1;
DELETE prereq['DataScience'] FROM University.Course WHERE id = 1;

Tập hợp so với Danh sách so với Bản đồ: Lựa chọn một tập hợp

Ba loại này trông có vẻ giống nhau nhưng khác nhau về chế độ bảo hành và chi phí cập nhật.

Yếu tố Thiết lập Danh sách Bản đồ
Thứ tự Sắp xếp theo giá trị Thứ tự chèn được giữ nguyên Sắp xếp theo khóa
Trùng lặp Không được phép Được phép Chìa khóa độc nhất
Chi phí cập nhật Rẻ, không cần đọc sách Thêm vào dễ dàng; việc thêm vào đầu và cập nhật chỉ mục yêu cầu đọc. Giá rẻ mỗi khóa
Tốt nhất cho Thẻ, địa chỉ email, nhãn duy nhất Các bước được sắp xếp theo thứ tự trong đó các bước trùng lặp có ý nghĩa. Thuộc tính được đặt tên với khóa không thể dự đoán được

Nên ưu tiên sử dụng tập hợp hơn danh sách trừ khi thứ tự thực sự quan trọng, vì các thao tác truy cập chỉ mục trong danh sách tạo ra các bản ghi đã bị xóa và có thể dẫn đến kết quả bất ngờ khi ghi đồng thời. Thêm vào đó đông lạnh Đối với bất kỳ cửa hàng nào trong ba cửa hàng đó, nó được lưu trữ dưới dạng một giá trị bất biến duy nhất, cho phép tập hợp xuất hiện trong khóa chính nhưng loại bỏ các cập nhật ở cấp độ phần tử.

CREATE TABLE University.Enrolment (
    id int,
    tags frozen<set<text>>,
    PRIMARY KEY (id, tags)
);

Khi một tập hợp có số lượng phần tử vượt quá vài chục, hãy mô hình hóa nó như một bảng riêng biệt với phần tử đó là cột nhóm, theo cách tiếp cận trong [tham khảo]. Cassandra quy tắc mô hình dữ liệuViệc lọc nội dung bộ sưu tập yêu cầu phải có chỉ mục, vấn đề này sẽ được đề cập trong phần tiếp theo. tạo và xóa chỉ mục hướng dẫn.

Câu Hỏi Thường Gặp

Đúng vậy, sau khi đã có chỉ mục. Sử dụng CONTAINS cho các giá trị trong tập hợp và danh sách, và CONTAINS KEY cho các khóa trong bản đồ, sau khi đã tạo chỉ mục VALUES, KEYS hoặc ENTRIES tương ứng.

Chỉ khi tập hợp bên trong được đóng băng, ví dụ như ánh xạ văn bản đến danh sách văn bản đã đóng băng. Một tập hợp chưa đóng băng không thể chứa một tập hợp khác.

Việc gán một tập hợp mới sẽ xóa mọi phần tử hiện có trước tiên, tạo ra một bản ghi đánh dấu phạm vi. Việc thêm và xóa từng phần tử riêng lẻ sẽ tránh được điều này và là phương pháp được ưu tiên.

Với số lượng phần tử dự kiến ​​và mô hình cập nhật, AI áp dụng quy tắc khá tốt: số lượng có giới hạn và nhỏ sẽ phù hợp với tập hợp dữ liệu, trong khi số lượng không giới hạn hoặc được truy vấn thường xuyên sẽ phù hợp với cột phân cụm.

Nhìn chung, nó thường nhầm lẫn dấu ngoặc nhọn của tập hợp với dấu ngoặc nhọn của danh sách và bỏ qua từ khóa "frozen" khi khóa chính yêu cầu. Hãy chạy các câu lệnh được tạo tự động với một không gian khóa thử nghiệm trước.

Tóm tắt bài viết này với: