键值存储:特性、企业应用与优化策略
1. 键值存储的常见特性
1.1 实现 ACID 支持
Aerospike 和 Redis 是实现最终一致性的例外,它们采用无共享集群。在这种集群中,每个键有以下特点:
- 主节点:只有主节点能为单个键提供答案,确保获取到最新副本。
- 多个从副本节点:包含主节点上所有数据的副本。
Aerospike 通过在事务向数据库客户端标记完成之前,将修改立即刷新到磁盘,提供完整的 ACID 事务一致性,且速度极快,反驳了 ACID 会降低写入速度的说法。它原生处理原始 SSD 进行数据写入,绕过较慢的操作系统文件系统支持。不过,更多的 SSD 意味着更高的服务器成本。Redis 配置为数据到达时立即刷新到磁盘,速度足够快,能保证数据持久化需求,其默认设置是每隔几秒将数据刷新到磁盘,服务器故障时可能有少量数据丢失风险。
需要符合 ACID 的键值存储的场景包括:
- 接收实验所需的传感器数据。
- 消息系统中必须保证消息接收。例如,Redis 提供的发布/订阅机制作为消息服务器后端,结合 ACID 支持可实现持久消息传递。
1.2 键管理
键值存储的快速读取能力源于使用定义良好的键,这些键通常经过哈希处理,能明确数据所在的分区(及服务器)。一个好的键能唯一标识满足查询的单条记录,无需查看记录中的值;而差的键则需要应用代码解释记录来确定是否匹配查询。
如果键设计不佳,可能导致某台服务器负载过重,性能下降。例如,使用当前系统时间作为键,会将所有新数据推到集群的最后一个节点,导致重新平衡困难。
超级会员免费看
订阅专栏 解锁全文
63

被折叠的 条评论
为什么被折叠?



