Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. NoSQL
Code

Làm quen với Cassandra: Sử dụng CQL API và CQLSH

by
Length:ShortLanguages:

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Apache Cassandra là một trong các hệ thống cơ sở dữ liệu mã nguồn mở phổ biến nhất. Nó được thiết kế với mục đích xử lý lượng lớn dữ liệu được lưu trữ trong nhiều máy chủ phân bố khắp nơi song song đó cung cấp khả năng mở rộng cao và sẵn có mà không gặp một lỗi nào. Các hệ thống Cassandra có thể mở rộng nhiều trung tâm dữ liệu, cho phép độ trễ thấp cho tất cả các máy kết nối.

Đây là một loạt hướng dẫn gồm ba phần, nơi tôi sẽ bắt đầu với các khái niệm cơ bản của Cassandra, sử dụng CQLSH để tạo ra các bảng và các record. Sau đó tôi sẽ giải thích các loại dữ liệu được hỗ trợ bởi Cassandra, và sau đó chúng ta sẽ sử dụng một thư viện Go client để lập trình xử lý các hoạt động của Cassandra.

Trong phần đầu tiên này, tôi sẽ khái quát ngắn gọn mô hình dữ liệu Cassandra được săp xếp như thế nào và thực hiện các hoạt động cơ bản bằng cách sử dụng CQLSH.

Đối với loạt bài hướng dẫn này, tôi giả định rằng độc giả sẽ có thể cài đặt Cassandra của mình trên máy của họ tương ứng với từng hệ điều hành.

Mô hình dữ liệu của Cassandra

Mô hình dữ liệu của Cassandra tuân theo cách tiếp cận hệ thống cột, mà có thể dễ dàng được hiểu tương tự như một cấu trúc bảng quan hệ nhưng theo cách NoSQL. Mô tả dưới đây sẽ làm cho nó rõ ràng hơn:

Keyspace

Một khóa có thể được xem như là kho chứa ngoài cùng nhất cho dữ liệu trong Cassandra. Tất cả dữ liệu trong Cassandra sẽ đặt trong một keyspace. Nó có thể được xem như là một cơ sở dữ liệu trong RDBMS, nó là một tập hợp các bảng. Trong trường hợp của Cassandra, một keyspace là một tập hợp hệ thống cột.

Hệ thống Cột

Một hệ thống cột có thể được xem như là một bộ sưu tập các hàng, và mỗi hàng có một tập hợp các cột. Nó tương tự như một bảng trong RDBMS nhưng có một số khác biệt. Hệ thống cột được xác định, nhưng không cần thiết mỗi hàng phải có tất cả các cột và các cột có thể được thêm vào hoặc xoá bỏ khỏi một hàng khi cần thiết.

Cột

Cột là đơn vị dữ liệu cơ bản trong Cassandra. Nó có 3 giá trị: khoá hoặc tên cột, giá trị cột, và một mốc thời gian.

Siêu cột

Một siêu cột là một loại cột đặc biệt mà lưu trữ một map của một cột con khác. Nó giúp cho lưu trữ dữ liệu phức tạp dễ dàng hơn và đồng thời giúp lấy dữ liệu nhanh hơn vì mỗi hệ thống cột trong Cassandra được lưu trữ trong một tập tin trên hệ thống tập tin.

Sử dụng Cassandra Console

CQLSH là shell tiêu chuẩn để tương tác với Cassandra thông qua CQL (Cassandra Query Language). CQL rất giống với SQL (chủ yếu được sử dụng cho RDBMS) và do đó giúp nó rất dễ dàng cho các nhà phát triển mới đến với Cassandra để làm quen với nó một cách nhanh chóng. CQLSH đi kèm với mỗi gói Cassandra và sẽ được cài đặt trên máy của bạn khi bạn cài đặt Cassandra.

Tạo một Keyspace

Như chúng ta đã thấy trong mô hình dữ liệu được mô tả ở trên, một keyspace là kho chứa ngoài cùng và phải được tạo ra trước bất cứ thứ gì khác. Để tạo ra nó, hãy chạy:

Trong lệnh ở trên, tôi đã giả định rằng Cassandra của bạn tồn tại trên localhost mà không cần bất cứ xác thực người dùng nào. Tôi đã tạo ra một keyspace gọi là k1 cùng với các nguyên tắc replicationdurable_writes được định nghĩa.

Nếu bạn có định nghĩa xác thực người dùng, thì bạn có thể chạy:

Trong lệnh ở trên, thay thế <username><password> bằng các thông tin xác thực của bạn.

Chạy một lệnh như thế này có thể có một chút rườm rà. Một cách khác là khởi động CQLSH và sau đó chạy các truy vấn trực tiếp bên trong nó.

Tiếp theo, tôi sẽ sử dụng phương pháp chạy truy vấn ở trên. Trước khi chạy bất cứ truy vấn khác, chúng ta cần phải nói cho CQLSH biết keyspace nào sẽ được sử dụng.

replication_factor cho một keyspace có thể được thay đổi để phù hợp với bao nhiêu replication cần thiết cũng như mỗi class replication.

Tạo và thay đổi một Bảng

Một bảng là tương đương với hệ thống cột trong Cassandra. Cassandra hỗ trợ nhiều kiểu khác nhau để lưu trữ dữ liệu, mà tôi sẽ khái quát chi tiết trong phần tiếp theo của loạt bài hướng dẫn này. Để tạo ra một bảng, chỉ cần chạy lệnh CREATE TABLE.

Để kiểm tra xem cấu trúc của bảng ra sao một khi được tạo ra:

Bây giờ chúng ta giả sử rằng chúng ta muốn thay đổi bảng để lưu trữ email của một người.

Chèn và Cập nhật Dữ liệu

Chèn dữ liệu vào một bảng Cassandra sử dụng CQL là khá dễ dàng.

Trong bảng này, chúng ta có tất cả các trường cho chỉ một kiểu dữ liệu. Mọi thứ trở nên phức tạp hơn một chút khi chúng ta sử dụng các kiểu dữ liệu hay các kiểu dữ liệu kết hợp khác. Đây sẽ là một chủ đề thảo luận trong phần tiếp theo của loạt bài này.

Giả sử rằng chúng ta muốn cập nhật các giá trị trong cột email thành cái gì đó khác.

Truy vấn Dữ liệu

Dữ liệu trong một bảng có thể được truy vấn chỉ bằng cách sử dụng câu lệnh SELECT.

Hãy chèn thêm một số record và truy vấn chúng.

Các toán tử truy vấn phức tạp hơn như các toán tử không bằng cũng có thể được sử dụng, hoặc một số điều kiện WHERE có thể được nối bằng cách sử dụng AND/OR, vv.

Tóm tắt

Cassandra là một trong những hệ thống cơ sở dữ liệu NoSQL phổ biến nhất hiện nay và được sử dụng tốt nhất trong môi trường phân phối. Làm việc với Cassandra là khá dễ dàng cho người mới bắt đầu với một số kiến thức của RDBMS và SQL.

CQL thì rất giống với SQL trong một chừng mực nào đó, và CQLSH giúp thử nghiệm và gỡ lỗi dễ dàng hơn nhiều. Trong phần tiếp theo của loạt bài này, tôi sẽ khái quát các kiểu dữ liệu được cung cấp bởi Cassandra và cách làm việc với chúng.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.