键值存储,NoSQL的一种,如何用它来构建常见的应用功能?
- 存储用户信息(登录信息)
- 存储与用户或其他实体相关的文档和/或“实体”
使用键值存储而不是典型的文档 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);
最佳答案
此问题的一个答案如所述 here 。
是对这样的信息进行建模:
[key] [value]
artist:1:name AC/DC
artist:1:genre Hard Rock
artist:2:name Slim Dusty
artist:2:genre Country
这里的问题是,如果底层数据存储不支持事务,则可能会发生集合中数据丢失的情况。然而,一个好的最终用户应用程序设计能够理解存储的每个数据(例如,艺术家实体实际上是存储的多个值),那么这就不成问题了。这里的关键是应用程序必须“理解”正在使用的数据库是存储的键值,就像 DNS 注册的设计方式一样,每条记录都是单独保存而不是批量保存,这将是常见情况,因为大多数 KV 存储都可以不处理批量操作。
关于java - 使用键值存储构建应用程序的设计策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62439401/