是否有以create和populate .cql脚本形式提供的Cassandra演示数据库?
Cassandra示例数据库快速搭建方案
无依赖CQL脚本方案
你可以直接使用以下现成的CQL脚本,保存为demo.cql后直接通过cqlsh -f demo.cql运行,无需任何额外依赖即可完成建库、建表、样本数据导入:
-- 创建演示用键空间,单节点测试用replication_factor设为1即可 CREATE KEYSPACE IF NOT EXISTS ecommerce_demo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}; USE ecommerce_demo; -- 创建用户订单表,适配Cassandra按用户查询订单的常见查询模型 CREATE TABLE IF NOT EXISTS user_orders ( user_id UUID, order_time TIMESTAMP, order_id UUID, total_amount DECIMAL, status TEXT, product_list LIST<TEXT>, PRIMARY KEY ((user_id), order_time) ) WITH CLUSTERING ORDER BY (order_time DESC); -- 插入预设样本数据 INSERT INTO user_orders (user_id, order_time, order_id, total_amount, status, product_list) VALUES (8edc8e5a-1b3c-4d7e-8f9a-1b2c3d4e5f6a, '2024-01-01 10:00:00', 9fec9e6b-2c4d-5e8f-9a0b-2c3d4e5f6a7b, 299.9, 'PAID', ['Wireless Headphone', 'Screen Protector']); INSERT INTO user_orders (user_id, order_time, order_id, total_amount, status, product_list) VALUES (8edc8e5a-1b3c-4d7e-8f9a-1b2c3d4e5f6a, '2024-01-03 09:15:00', 0afd0f7c-3d5e-6f9a-0b1c-3d4e5f6a7b8c, 89.9, 'DELIVERED', ['Phone Case']); INSERT INTO user_orders (user_id, order_time, order_id, total_amount, status, product_list) VALUES (7cdb7d49-0a2b-3c6d-7e8f-0a1b2c3d4e5f, '2024-01-02 14:30:00', 1bfe1g8d-4e6f-7a0b-1c2d-4e5f6a7b8c9d, 159.5, 'SHIPPED', ['Mechanical Keyboard']); INSERT INTO user_orders (user_id, order_time, order_id, total_amount, status, product_list) VALUES (7cdb7d49-0a2b-3c6d-7e8f-0a1b2c3d4e5f, '2024-01-05 18:45:00', 2cgf2h9e-5f7a-8b1c-2d3e-5f6a7b8c9d0e, 459, 'PAID', ['Monitor Stand', 'Cable Organizer']);
如果需要更多预设数据,可直接在脚本末尾追加INSERT语句即可。
Python批量生成样本数据方案
如果需要更大体量的测试数据,可使用以下Python脚本,仅需提前安装cassandra-driver和faker依赖即可运行:
from cassandra.cluster import Cluster from faker import Faker import uuid from datetime import datetime # 初始化连接,将地址替换为你的Cassandra节点地址 fake = Faker() cluster = Cluster(['127.0.0.1']) session = cluster.connect('ecommerce_demo') # 批量生成1000个用户、最高5000条订单数据 for _ in range(1000): user_id = uuid.uuid4() # 每个用户随机生成1-5条订单 for __ in range(fake.random_int(1,5)): order_time = fake.date_time_between(start_date='-1y', end_date='now') order_id = uuid.uuid4() total_amount = round(fake.random_int(10, 10000) * 0.1, 2) status = fake.random_element(elements=('PAID', 'SHIPPED', 'DELIVERED', 'CANCELED')) product_list = [fake.word() for _ in range(fake.random_int(1,4))] session.execute( """ INSERT INTO user_orders (user_id, order_time, order_id, total_amount, status, product_list) VALUES (%s, %s, %s, %s, %s, %s) """, (user_id, order_time, order_id, total_amount, status, product_list) ) cluster.shutdown()
最低成本搭建步骤
- 小数据量测试直接复制上述CQL脚本保存为
demo.cql,执行cqlsh -f demo.cql即可完成部署,全程耗时不超过1分钟 - 需要大数据量测试时,先执行CQL脚本完成键空间和表创建,再安装Python依赖后运行上述脚本,10秒内可生成数千条测试数据
内容的提问来源于stack exchange,提问作者g.pickardou
相关产品推荐
相关产品推荐

