首页 > 解决方案 > 使用键值存储构建应用程序的设计策略

问题描述

键值存储,NoSQL 的一种,如何用于构建常用的应用功能?

使用 Key-Value 存储而不是典型的文档 NoSQL 的建模应用程序的一般策略是什么?

例如,如果您只有此 API 来连接数据存储:

put(String bucketName, String, byte[] value);
byte[] get(String bucketName, String key);
List<String> getKeys(String bucketName, String prefix, int maxKeys);
delete(String bucketName, String key); 

标签: javanosqldata-modeling

解决方案


here所述,此问题的一个答案。

是像这样建模信息:

[key]           [value]
artist:1:name   AC/DC
artist:1:genre  Hard Rock
artist:2:name   Slim Dusty
artist:2:genre  Country

这里的问题是,如果底层数据存储不支持事务,那么可能会出现一组数据丢失的情况。然而,一个好的最终用户应用程序设计理解存储的每个数据,例如,艺术家实体实际上存储了多个值,那么这将不是问题。这里的关键是应用程序必须“理解”正在使用的数据库是一个键值存储,就像 DNS 注册的设计方式一样,每条记录都是单独保存而不是批量保存,这将是通常的情况,因为大多数 KV 存储可以'不处理批处理操作。


推荐阅读