java - 使用键值存储构建应用程序的设计策略

标签 java nosql data-modeling

键值存储,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/

相关文章:

java - 由类声明子类引起的 StackOverflowError?

java - 升级到 Jetty 7 时日志配置丢失

amazon-web-services - PartiQL VS U-SQL

Sql数据库与文档数据库?

database - Vertica 中的最大列数和列长度?

mysql - 数据库:什么设计让 "document table"引用其他表

java - 在 Java 中初始化 Log4j2 滚动文件 Appender

java - Stripe : How do i know whether card is 3d secure and how to charge it

redis - friend 的 friend 用例 - Redis 与图形数据库

database - 用于简单消息传递应用程序的 Cassandra 数据模型