【问题标题】:Couchbase multi-dimensional keysCouchbase 多维键
【发布时间】:2014-06-22 22:41:58
【问题描述】:

我是 Couchbase 的新手,想了解它是否适​​合我的领域。 我有以下数据:

Birth  City    Name
1980   A       John
1981   B       Rick
1982   A       Ase
1983   C       Max
1984   C       Bob
1980   A       Rick
1983   D       John
1982   A       Bob
1985   C       Bob

并没有讨论如何实现类似于以下 SQL 查询:

SELECT birth FROM tbl WHERE city in (A,C) and name (Bob, Rick)

获取以下数据:

1984   C       Bob
1980   A       Rick
1982   A       Bob
1985   C       Bob

“startkey”和“endkey”视图用法的一大区别是它不是范围选择,而是两个不同的维度值。

在我的真实场景中,我需要将 1-5000 个 ID 放入“IN”语句中。 我发现的唯一一种方法是使用索引和 N1ql http://docs.couchbase.com/prebuilt/n1ql/n1ql-dp3/#create-index.html,但这似乎不是访问数据的最快方法。

  1. 访问具有大量键值的多维键数据的最佳做法是什么?
  2. 可以在 N1ql 中创建大的“in”语句吗?

【问题讨论】:

  • 这看起来像是一个 SQL 非常适合的查询......为什么您需要为此使用 Couchbase?也许 ElasticSearch 集成将有助于为您的需求提供更灵活的查询。

标签: indexing couchbase


【解决方案1】:

你应该用emit函数做一个视图,包括一个具有二维值的键,并以这种方式返回值:

emit([doc.Name, doc.City], doc.Birth);

您必须使用参数键查询它:

keys=[["Bob", "A"], ["Bob", "C"], ["Rick", "A"], ["Rick", "C"]]

【讨论】:

  • 它适用于小的选择,但如果我有 100-200 个 ID 用于第一维,而 1000 用于秒,那么将它一个一个相乘将是一团糟。所以谢谢,我正在考虑,但还是不想走这条路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多