1

我们即将启动一个新项目,其中需求之一就是使用NoSQL解决方案。由于我们依赖于aws,90%的机会将成为Amazon DynamoDB。我们正在研究DynamoDB存储之上的TitanDB(图形)。关系数据模型到NoSQL,Amazon DynamoDB

数据模型包括:

  • 用户角色,权限,令牌存储
  • 多个关系像数据与一对多/一对一的关联

任务,我们去解决:

  • 在数据之上构建报告。某些报告可以从不同的实体包括字段通过范围(从 - 到)
  • 过滤
  • 排序,计数,分页
  • 所有上述可同时

体积的被施加的数据:

  • 数据量不是那么大,我们不流事件实时

假设: 据我了解,我们需要创建我们要建立(合并来自不同的“表”的数据)的报告,非规范化的观点 - 保持数据的拷贝在多个表中。 或 我们需要使用Elasticsearch或其他解决方案进行索引。

图形数据库经验看起来很疯狂,但提供了一个清晰的数据模型,其中每个实体与另一个实体有关系。需要知道查询的db api的局限性。

问题:

  • 什么是是非关系数据库管理关系型数据,并保持一致的最佳途径?
  • 是否有任何事务支持(例如在DynamoDB中)保持数据一致(在数据更新过程中,由于非规范化,我们应该将数据写入多个表)?
  • 这是一个很好的解决方案,与Elasticsearch集成并向其发出搜索请求,然后通过数据库中的id获取数据?迪纳摩

回答

0

读取DynamoDB中的一致性可能最终一致或强烈一致;请查看http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html了解两者之间差异的详细信息。

将ElasticSearch与图形结合使用仍然是一项新兴技术组合。有一些项目(弹性gremlin和unipop)正在解决它。根据您的使用情况,您应该能够通过使用Gremlin(它是Tinkerpop的一部分)遍历Titan图形来获取数据,而无需添加额外的ElasticSearch图层...但您可能不会。如果您想要在AWS中轻松实验ES环境,您可能需要查看https://aws.amazon.com/elasticsearch-service/

此外:如果您有AWS支持合同,您应该联系他们 - 这不仅仅是为了中断/修复。支持团队可以将您连接到AWS技术人员,他们可以帮助验证甚至测试您的计划。