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.

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ợ:
- Thiết lập
- Danh sách
- 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.
Đây là ảnh chụp nhanh nơi dữ liệu đang được chèn vào 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".
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”.
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.
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ó.
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 đồ.
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.






