跳到主要内容

ScyllaDB 开发

  • Batch
    • 尽量确保在相同分区
    • max_mutation_size_in_kb
      • commitlog_segment_size_in_mb 至少为 2*max_mutation_size_in_kb/1024
    • batch_size_fail_threshold_in_kb=50

NodeJS

pnpm add cassandra-driver
pnpm add -D tsx typescript @types/node

docker exec -it scylla nodetool status
docker exec -it scylla cqlsh -e "CREATE KEYSPACE catalog WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy','datacenter1':1 }"
docker exec -it scylla cqlsh -k catalog -e "CREATE TABLE users (name text, age int, PRIMARY KEY(name))"
test.ts
import { Client } from 'cassandra-driver';

const client = new Client({
contactPoints: ['localhost'],
localDataCenter: 'datacenter1',
keyspace: 'catalog',
// 默认账号密码
credentials: {
username: 'cassandra',
password: 'cassandra',
},
});

await client.batch(
[
{
query: 'insert into users (name, age) values (?,?)',
params: ['test', 1],
},
{
query: 'insert into users (name, age) values (?,?)',
params: ['test2', 1],
},
{ query: 'update users set age = ? where name = ?', params: [2, 'test2'] },
],
{ prepare: true },
);

console.log((await client.execute(`SELECT * FROM users WHERE name = ?`, ['test2'])).rows);
console.log((await client.execute(`SELECT count(1) FROM users`, ['test2'])).rows[0].count);

process.exit(0);
pnpm tsx test.ts