如何创建Aerospike的Namespace与Set?是否仅支持配置文件方式
结论先行
5年前博客提到的「仅能通过修改配置文件创建Namespace」的说法完全属实,不存在运行时动态创建Namespace的操作命令;但Set不需要提前手动创建,也不需要修改配置,写入第一条数据时会自动生成。
Namespace 具体操作方法
Namespace是Aerospike的顶层存储隔离单元,对应独立的存储配额、副本策略、持久化规则、引擎类型等核心配置,属于集群级静态资源,必须在所有节点的配置文件中预定义后滚动重启生效:
- 登录集群每台节点,编辑Aerospike默认配置文件
/etc/aerospike/aerospike.conf
- 登录集群每台节点,编辑Aerospike默认配置文件
- 添加目标Namespace的配置段,基础配置示例如下:
# 命名为demo_ns的namespace配置示例 namespace demo_ns { # 副本数设置为2 replication-factor 2 # 分配4G内存用于数据缓存 memory-size 4G # 存储引擎配置 storage-engine device { # 持久化文件路径 file /opt/aerospike/data/demo_ns.dat # 持久化文件大小16G filesize 16G # 数据常驻内存开启 data-in-memory true } }
- 逐台执行节点重启操作,严格遵循滚动重启规则:单台节点重启完成、通过
asadm确认集群回到健康状态后,再操作下一台节点,避免业务中断。
- 逐台执行节点重启操作,严格遵循滚动重启规则:单台节点重启完成、通过
- 所有节点重启完成后,在aql或asadm中执行
show namespaces,确认新Namespace已在集群中生效。
- 所有节点重启完成后,在aql或asadm中执行
注意:Namespace创建完成后,存储引擎类型、副本数这类核心参数修改仍需调整配置文件后滚动重启,不支持热更新。
Set 具体操作方法
Set是Namespace下的逻辑数据分组,类似关系型数据库中的表,没有预创建流程:
- 不需要修改配置,也不需要执行专门的创建命令,当你第一次向指定Namespace下的目标Set写入第一条数据时,Set会被自动创建。
- 比如在aql命令行中直接执行以下写入语句,不存在的
demo_set会自动生成:
INSERT INTO demo_ns.demo_set (PK, username, register_time) VALUES ('u_1001', 'test_user', 1717209600)
- 如果需要给Set配置独立的记录配额、二级索引、默认TTL等规则,可以在Set自动生成后通过动态配置命令、客户端接口直接设置,无需重启节点。
- Set不支持直接删除,需要清空Set数据时可调用truncate接口,或配置数据过期策略让数据自动淘汰。
内容的提问来源于stack exchange,提问作者Sravanth Sai
相关产品推荐
相关产品推荐

