为项目选择合适的数据库取决于您的使用场景和您要用数据解答的问题。选择合适的 NoSQL 数据库可能很棘手,因为它们中的大多数只是提供单数据模型。现在或在不久的将来,您可能需要多个数据模型来满足您的应用或公司的需求。这里提供一些关于三种数据模型(键值、图形、文档)的选择的指导思路,除了这三个还有行存储和列存储。
- 文档模型使得开发者更容易地存储和组合任何结构的数据,而无需放弃访问和索引功能。此外,未来如果需要对数据模型进行变更也可以在不停机的情况下完成。一般用于用户数据、产品数据等。
- 键值(key-value)模型最适合用于需要快速查找简单数据的情况。这些查找可通过将键值作为指向任何类型的值的唯一标识符来直接完成。这种模型适用于购物车数据或仅由标识符和值组成的传感器数据。
- 另一个当前非常受欢迎的数据模型是图形。通过使用图形,开发者和数据科学家可通过将数据存储为节点、边界和属性来关注值之间的关系。在这个数据网络中,每个元素都包含一个指向其相邻元素的指针,它可以在数据集中启用全新的查找模式的方法。当你在执行搜索之前不知道其深度时,图形在这方面性能表现十分优异,例如查找我所有生活在北京的朋友或朋友的朋友。使用图形,将数据模型从白板转换到数据库非常容易,还可以根据未来的需求灵活调整查询。
这些都是新的数据模型,可以解决现代应用程序开发过程中的重要部分。我认为将各种单一数据模型的数据库集成到应用程序中会导致大量的复杂性及很高的运营成本,更不要说在使用多个数据库的情况下获取数据的一致状态,这几乎是不可能完成的任务。这也是为什么我们认为使用具有完整的 ACID 事务并支持诸如 joins, aggregations 和 graph traversals 等特性的多模型数据库是一个更好的选择。