Cassandra có phải là khung javascript không

Một Node hiện đại, giàu tính năng và có khả năng điều chỉnh cao. js cho Apache Cassandra và DSE sử dụng riêng giao thức nhị phân của Cassandra và Ngôn ngữ truy vấn Cassandra

Cài đặt

$ npm install cassandra-driver

Đặc trưng

  • Báo cáo Đơn giản, Đã chuẩn bị và Hàng loạt
  • IO không đồng bộ, thực thi song song, đường ống yêu cầu
  • tổng hợp kết nối
  • Phát hiện nút tự động
  • Tự động kết nối lại
  • Chính sách cân bằng tải và thử lại có thể định cấu hình
  • Hoạt động với mọi kích thước cụm
  • Trình ánh xạ đối tượng tích hợp
  • Cả API dựa trên lời hứa và gọi lại
  • Dòng hàng và đường ống
  • Hỗ trợ TypeScript tích hợp

Tài liệu

  • mục lục tài liệu
  • các loại CQL thành các loại JavaScript
  • tài liệu API
  • Câu hỏi thường gặp

Tìm sự giúp đỡ

Bạn có thể sử dụng danh sách gửi thư của dự án hoặc tạo một vé trên trình theo dõi vấn đề Jira

sử dụng cơ bản

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];

Trình điều khiển hỗ trợ cả lời hứa và gọi lại cho các phương thức không đồng bộ, bạn có thể chọn phương pháp phù hợp với nhu cầu của mình

Lưu ý rằng để có các ví dụ mã ngắn gọn trong tài liệu này, chúng tôi sẽ sử dụng API dựa trên lời hứa của trình điều khiển cùng với từ khóa

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
2

Nếu bạn đang sử dụng DataStax Astra, bạn có thể định cấu hình máy khách của mình bằng cách đặt gói bảo mật và thông tin đăng nhập của người dùng

const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];

Chuẩn bị truy vấn của bạn

Sử dụng báo cáo chuẩn bị cung cấp nhiều lợi ích

Các câu lệnh đã chuẩn bị được phân tích cú pháp và chuẩn bị trên các nút Cassandra và sẵn sàng để thực hiện trong tương lai. Ngoài ra, khi chuẩn bị, trình điều khiển sẽ truy xuất thông tin về các loại tham số cho phép ánh xạ chính xác giữa loại JavaScript và loại Cassandra

Trình điều khiển sẽ chuẩn bị truy vấn một lần trên mỗi máy chủ và thực hiện câu lệnh với các tham số ràng buộc

// Use query markers [?] and parameters
const query = 'UPDATE users SET birth = ? WHERE key=?'; 
const params = [ new Date[1942, 10, 1], 'jimi-hendrix' ];

// Set the prepare flag in the query options
await client.execute[query, params, { prepare: true }];
console.log['Row updated on the cluster'];

Dòng hàng và đường ống

Khi sử dụng các phương thức

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
3 và
const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
4, trình điều khiển sẽ phân tích cú pháp từng hàng ngay khi nhận được, tạo ra các hàng mà không cần đệm chúng

// Reducing a large result
client.eachRow[
  'SELECT time, val FROM temperature WHERE station_id=',
  ['abc'],
  [n, row] => {
    // The callback will be invoked per each row as soon as they are received
    minTemperature = Math.min[row.val, minTemperature]; 
  },
  err => { 
    // This function will be invoked when all rows where consumed or an error was encountered  
  }
];

Phương thức

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
4 hoạt động theo cách tương tự nhưng thay vì gọi lại, nó trả về một đối tượng Readable Streams2 trong
const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
6 phát ra các thể hiện của
const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
7

Nó có thể được dẫn xuôi dòng và cung cấp logic tạm dừng/tiếp tục tự động [nó lưu vào bộ đệm khi không đọc]

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
1

Loại do người dùng xác định

Các loại do người dùng xác định [UDT] được biểu diễn dưới dạng các đối tượng JavaScript

Ví dụ. Xem xét UDT sau và bảng

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
2

Bạn có thể truy xuất chi tiết địa chỉ người dùng dưới dạng đối tượng JavaScript thông thường

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
3

Đọc thêm thông tin về cách sử dụng UDT với Node. trình điều khiển js

phân trang

Tất cả các phương pháp trình điều khiển sử dụng một

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
8 mặc định trong số 5000 hàng, chỉ truy xuất trang kết quả đầu tiên lên đến tối đa 5000 hàng để bảo vệ ứng dụng khỏi việc vô tình truy xuất các tập kết quả lớn trong một phản hồi

Phương pháp

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
9 tự động tìm nạp trang sau khi trang hiện tại được đọc. Bạn cũng có thể sử dụng phương pháp
const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
0 để truy xuất các trang sau bằng cách sử dụng cờ
const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
1. Xem [tài liệu phân trang để biết thêm thông tin] [phân trang tài liệu]

Batch nhiều báo cáo

Bạn có thể thực thi nhiều câu lệnh trong một đợt để cập nhật/chèn nguyên bản một số hàng ngay cả trong các họ cột khác nhau

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
8

Trình ánh xạ đối tượng

Trình điều khiển cung cấp một trình ánh xạ đối tượng tích hợp cho phép bạn tương tác với dữ liệu của mình giống như bạn sẽ tương tác với một bộ tài liệu

Lấy các đối tượng từ cơ sở dữ liệu

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
9

Cập nhật một đối tượng từ cơ sở dữ liệu

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
0

Bạn có thể đọc thêm thông tin về cách bắt đầu với Mapper trong tài liệu của chúng tôi

Loại dữ liệu

Có một số loại dữ liệu được xác định trong đặc tả ECMAScript, điều này thường gây ra sự cố khi bạn đang cố gắng xử lý các loại dữ liệu đến từ các hệ thống khác trong JavaScript

Trình điều khiển hỗ trợ tất cả các kiểu dữ liệu CQL trong Apache Cassandra [3. 0 trở xuống] ngay cả đối với các loại không có biểu diễn JavaScript tích hợp sẵn, như thập phân, varint và bigint. Kiểm tra tài liệu về cách làm việc với các giá trị số, uuid và bộ sưu tập

ghi nhật ký

Các trường hợp của

const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
2 là
const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
3 và phát ra các sự kiện
const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
4

const cassandra = require['cassandra-driver'];

const client = new cassandra.Client[{
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
}];

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute[query, [ 'someone' ]]
  .then[result => console.log['User with email %s', result.rows[0].email]];
1

const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
5 được truyền cho người nghe có thể là
const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
6,
const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
7,
const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
8 hoặc
const client = new cassandra.Client[{
  cloud: { secureConnectBundle: 'path/to/secure-connect-DATABASE_NAME.zip' },
  credentials: { username: 'user_name', password: 'p@ssword1' }
}];
9. Truy cập tài liệu ghi nhật ký để biết thêm thông tin

khả năng tương thích

  • Apache Cassandra phiên bản 2. 1 trở lên
  • DataStax Enterprise phiên bản 4. 8 trở lên
  • Nút. js phiên bản 8 trở lên

Ghi chú. Các sản phẩm DataStax không hỗ trợ các hệ thống big-endian

Tín dụng

Trình điều khiển này dựa trên tác phẩm gốc của Jorge Bay trên nút-cassandra-cql và thêm một loạt các tính năng nâng cao phổ biến trên tất cả các trình điều khiển DataStax khác cho Apache Cassandra

Nỗ lực phát triển để cung cấp một Node cập nhật, hiệu suất cao, đầy đủ tính năng. js cho Apache Cassandra sẽ tiếp tục trong dự án này, trong khi nút-cassandra-cql sẽ bị ngừng

Giấy phép

© DataStax, Inc

Được cấp phép theo Giấy phép Apache, Phiên bản 2. 0 ["Giấy phép"]; . Bạn có thể lấy một bản sao của Giấy phép tại

http. //www. apache. org/giấy phép/GIẤY ​​PHÉP-2. 0

Trừ khi luật hiện hành yêu cầu hoặc được đồng ý bằng văn bản, phần mềm được phân phối theo Giấy phép sẽ được phân phối trên CƠ SỞ "NGUYÊN TRẠNG", KHÔNG CÓ BẢO ĐẢM HAY ĐIỀU KIỆN DƯỚI BẤT KỲ HÌNH THỨC NÀO, rõ ràng hay ngụ ý. Xem Giấy phép để biết các quyền và giới hạn quản lý ngôn ngữ cụ thể theo Giấy phép

Cassandra có phải là một khuôn khổ không?

Cassandra là một hệ thống quản lý cơ sở dữ liệu NoSQL miễn phí và mã nguồn mở, phân tán, lưu trữ nhiều cột, được thiết kế để xử lý lượng lớn dữ liệu trên nhiều máy chủ hàng hóa, cung cấp tính sẵn sàng cao mà không có điểm lỗi nào

Cassandra được viết bằng ngôn ngữ nào?

Java

Cassandra thuộc loại kiến ​​trúc nào?

Cassandra có kiến trúc kiểu vòng . Cassandra không có nút chủ và không có điểm lỗi duy nhất. Cassandra hỗ trợ cấu trúc liên kết mạng với nhiều trung tâm dữ liệu, nhiều giá đỡ và nút. Các quy trình đọc và ghi của Cassandra đảm bảo tốc độ đọc và ghi dữ liệu nhanh chóng.

Apache Cassandra là loại hệ thống gì?

Apache Cassandra là hệ thống quản lý cơ sở dữ liệu phân tán được xây dựng để xử lý lượng lớn dữ liệu trên nhiều trung tâm dữ liệu và đám mây. Các tính năng chính bao gồm. Khả năng mở rộng cao. Cung cấp tính khả dụng cao.

Chủ Đề