问题标签 [secondary-indexes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
riak - Riak 2i - 列出索引值
是否可以列出之前保存在 Riak 存储桶中的所有二级索引值(leveldb,启用 2i)?在 Riak 中有以下数据:
我希望能够发送一个查询,该查询将返回我{a, b}
作为结果(或者可能是相同结果的流句柄,如果它太大的话)。就像是:
是否有可能从 Riak 获得此类信息?
注意:{x, y}
在我们的例子中,我对获取实际的对象键不感兴趣。
primary-key - DynamoDB 中的主键和 GSI 设计
我最近开始学习 DynamoDB 并创建了一个具有以下属性的表“评论”(以及 DynamoDB 类型):
以下是我希望在此表上运行的查询:
现在,为了能够运行这些查询,我在“评论”表上创建了以下内容:
最后一个索引有点像 hack,因为我只在表中引入了“活动”属性,因此所有记录的值都可以是“1”,我可以将它用作 GSI 的哈希键。
我的问题很简单。我已经阅读了一些关于 DynamoDB 的内容,这是我能想到的最好的设计。我想问是否有更好的主键/索引设计可以在这里使用。如果 DynamoDB 中有一个我可能错过的概念,它可能对这个特定用例有益。谢谢!
cassandra - 带有消息收件箱的已读/未读状态的 Cassandra 建模,CQL
我正在尝试为消息框应用程序找到最佳数据模型。该消息按照首先出现“未读”的顺序出现,然后随着用户滚动“已读”消息将出现。在这两个类别中,我想按到达时间对消息进行排序。类似于 gmail 中的优先收件箱。
我想使用的第一个模式是:
所以我的数据首先按布尔字段排序,然后按时间排序。现在我可以轻松地先查看我的“未读”消息,然后在它们全部结束后,我将开始阅读“已读”消息。
问题是我无法更新任何消息状态,因为它是主键的一部分。我可以做一个删除然后插入一个批处理操作,它也是同一行。
另一个解决方案是:
每个状态都有一行。我获得了非常容易的访问权限,但这是否意味着我必须处理交易?阅读消息时,我必须将其从“未读”行中删除并将其插入“已读”行,它们可能位于不同的分区中。
分区键的另一个版本可以是:
然后我会在 isRead 上添加一个二级索引。我的查询将始终针对某个用户而不是一组用户。
关于什么更好的任何想法?还是有其他建模想法?
hbase - Apache Phoenix csvbulkloadTool 失败
我正在使用以下 Linux 命令:
该命令运行成功,但是没有从 csv 文件中加载数据到 hbase 表中,但是数据成功加载到了索引表中(导入 csv 文件为 TT 的索引表)。
环境:</p>
HBASE 0.98.9
Hadoop 2.6.0
凤凰 4.6-hbase-0.98
案例1:索引覆盖所有列
1)
2)
3)
4)
成功并拥有数据
成功并拥有数据
测试用例:org.apache.phoenix.mapreduce.CsvBulkLoadToolIT.testImportWithIndex()
案例2:索引覆盖部分列
1)
2)
3)
4)
成功但没有数据
成功有数据
测试用例:org.apache.phoenix.mapreduce.CsvBulkLoadToolIT.testImportOneIndexTable()
amazon-web-services - DynamoDB - 查询范围键的最大值
我有一个具有以下结构的 DynamoDB 表
我有一个本地二级索引,其范围键是A3。
我想找出一个特定的哈希键 HK ,属性A3的最大值是什么。所以我像这样查询二级索引:
问题是它返回具有指定哈希键的所有记录,按范围键(A3)反向排序。我想一个人拿到第一张唱片。(给定 HK 的 A3 值最大的记录)。
我尝试使用setLimit,但它不起作用。
我怎样才能做到这一点..
mysql - Symfony2/Doctrine2 从 querybuilder 对象获取连接实体
给定两个学说实体(Person
和Company
),一对多关联,以及一个看起来像这样的存储库
如何检索公司的实体(对象或名称),最好从 $qb 对象(或从别名、DQL、AST、解析器等)中检索?
理想情况下,我希望有一个数组,其中包含 Querybuilder 实例使用的所有别名,或者至少是那些在select方法中定义的别名及其实体,格式如下:
在$qb->getDQLPart('join')
甚至更低级别的东西中,例如$qb->getQuery()->getAST()->fromClause->identificationVariableDeclarations
有关于别名的连接信息,但它只包含根实体及其别名(p = TestBundle\Entity\Person)。
getRootEntity
, getRootAliases
,getAllAliases
没有帮助,因为我获得了根实体和/或所有别名,但无法将它们链接在一起。
$em->getClassMetadata($rootentity)->associationMappings
给我根实体的关联,它包含连接的目标实体,但没有别名。我当然可以将字段名称映射到信息$qb->getDQLPart('join')
,但这会让我进入一个我必须从每个实体对象递归地爬取信息的区域。这似乎会导致严重的错误。
Querybuilder 如何将关联转换为正确的实体?或者它根本不这样做,只是解析到较低级别的东西而不知道它正在使用什么实体?
我需要这些信息,以便确保某些实体字段上有特定的二级索引。这些二级索引可以使用注解来设置,并通过学说($em->getClassMetadata($entity)->table['indexes']
)存储在实体中。
在构建查询时,我需要(以编程方式)知道哪些字段具有二级索引,并且希望尽可能保持在抽象树的较高位置。
lua - 高 Aerospike 延迟
在 aerospike 集合中,我们有四个 bin,userId、adId、timestamp、eventype,主键是 userId:timestamp。在 userId 上创建二级索引以获取特定用户的所有记录,并将结果记录传递给流 udf。在我们的客户端直到 500 qps,aerospike 查询延迟是合理的,平均延迟以微秒为单位,但是一旦我们将 qps 增加到 500 以上,aerospike 查询延迟就会飙升(大约 10 毫秒)
我们在客户端看到的消息附在下面:
下面是lua文件:
有 2 个节点,服务器托管在 AWS 中,实例类型为 T2.large。
我们甚至更改了以下配置参数,但它进一步增加了延迟:
sql - h2 是否支持使用辅助键创建表?
h2 是否支持使用辅助键创建表?
当我尝试这个创建表时,它失败了“org.h2.jdbc.JdbcSQLException:未知数据类型:”(“;SQL语句:”
但是这个成功了:
riak - 具有多个二级索引的 Riak 性能 (2i)
我正在为系统制定计划,并且正在考虑将数据库从关系模型更改为具有 Riak 等额外功能的 KV。需求的大部分功能都可以毫无问题地在 KV 中建模,但对于那些极端情况,我遇到了一些麻烦。我一直在阅读有关 Riak 的 2i 后端的信息,它看起来非常方便。有一些问题我找不到任何答案。
随着每个条目的 2i 数量的增加,应该预期什么样的性能下降或内存使用变化?
每个条目应该使用多少个 2i?
2i 更改是否有价值?如果有的话,对 Riak 性能有什么影响(例如,存储最后一个活动的字段)?
java - 查询 Cassandra 元数据是否存在二级索引
使用第 3 版的 Cassandra Java 驱动程序,如何确定列上是否有二级索引?
使用驱动程序的版本 2,我可以简单地检查是否ColumnMetadata.getIndex()
返回非空值。但是该方法已被删除:
这是因为二级索引在 Cassandra 3.0 中已经完全重新设计......不幸的是,没有简单的方法可以恢复删除方法提供的功能