Pat*_*ick 6 nosql database-design best-practices couchdb
处理“参考表”(包含静态数据的表,例如包含各种食物成分的列表)的最佳方法是什么?
每个参考文献一份
{ "_id" = "ingredients", "ingredient": [{ "name":"Apple", ... }] }
一份包含所有参考文献的文档
{ "_id" = "references", "ingredients": [{"id": "apple", "name": "Apple", ...}], "spices": [{"id": "cinnamon" , "name": "Cinnamon", ...}] }
作为一名盯着这个问题的 MySQL DBA,我从关系角度思考。我还考虑进行 JOIN 操作。然而,从 NoSQL 的角度来看,JOIN 必须以编程方式完成。
多个文档,每种成分一个:这将使放置在集合中的静态数据量最少。然而,您应该准备好获取参考资料、使用 CouchDB 为自己构建临时集合或直接将数据发送到您的应用程序。
一份包含所有参考文献的文档:如果您满足于挖掘 Collections out of Collections out of Collections ...(无穷大),您愿意构建这样的集合,并且您对此感到满意,那么以这种方式存储数据就可以了。请确保您不是唯一的 CouchDB Jedi(除非是工作保障问题),因为您可能希望您的代码可以被其他人理解和维护。
每个参考文献一个文档:现在,这是一个很好的中间立场。如果集合布局发生变化,它将提供一定的灵活性。成分的简单检索可以独立于香料或器皿的检索。仍然需要执行程序化 JOIN,但不是那么深入。那些 NoSQL 范式的新手(比如我)会轻松地理解和检索数据,而不必担心破坏根深蒂固的复杂数据表示。
我个人的选择是选项#2。
归档时间: |
|
查看次数: |
1964 次 |
最近记录: |