我想使用面向couchbase json-document。 但我不知道存储和构造数据以及稍后检索数据的最佳方法是什么。
是否有任何教程可以开始使用(couchbase.com上的学习资源没有帮助)?
我正在使用PHP访问couchbase。 我有以下样本:
(new document)
user1
{
"uid":1,
"name":"marius"
}
(new document)
planet1
{
"pid":1,
"user_uid":1,
"name":"earth"
}
(new document)
user2
{
"uid":2,
"name":"anyone"
}
(new document)
planet2
{
"pid":2,
"user_uid":2,
"name":"saturn"
}
现在将这些文档设置(插入)到数据库中的最聪明的方法是什么,以及如何通过选择获取(选择)文档。
在SQL中说出我想要的 - > SELECT * FROM user,planet WHERE user.uid = 1 AND planet.user_uid = 1
答案 0 :(得分:0)
Couchbase以不同于关系数据库的方式存储数据。
有两种主要方法可以从Couchbase中获取数据:
<强>键/值即可。这意味着您可以为文档提供一个查询键,然后显然该值将是整个文档。所以对于用户来说:
user = couch.get(123)
这将返回用户ID 123的整个文档。
<强>视图即可。您可以使用map / reduce函数在Couchbase中编写视图。很酷的是,可以通过与CouchDB中的视图类似的方式访问这些视图,因此您可以执行诸如排序和限制之类的操作。 http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options
查看Couchbase门户中的设计文档/视图。当你写一个它会给你一个URL来测试你的地图/减少东西。然后,您可以向URL添加参数以执行其他工作。
答案 1 :(得分:0)
没有一般方法说明你的文件应该如何设计。它取决于您的应用程序的特征。写与读比率?如何消耗数据等。凭借在沙发中使用视图转换数据的优势,我想您可以创建更多“通用”文档并创建特定视图来转换文档以适合您的用例。当然不是你应该适用于所有用例的解决方案(不要把它看作是银弹设计)。
一个典型的例子是博客示例。您是应该在帖子中存储评论还是提取评论并拥有自己的居住地,并提供参考?这取决于特点。是否更常见的是有一些评论,还是通常会有大量评论?
另一个样本。如果您存储订单文档怎么办?客户应该是订单的一部分还是客户的订单?可能两者兼而有之吗?是的,它可以。我想说,对于文档dbs,你需要对数据重复更加开放。可能是客户文档仍然作为客户的“当前视图”存在,其所有数据和订单都包含客户快照的片段;对于订单上下文和应用程序中的一些概述有用,然后使用对实际客户文档的引用?大概。但同样,这取决于您如何使用数据。
关于SQL翻译:http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-sql.html