问题标签 [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.
java - 如何在 hbase 协处理器中进行拦截扫描
如何拦截 hbase 中查询的内容?我看到你可以拦截preGetOp
,preScannerOpen
但我不知道看到什么column families
,column qualifiers
正在被查询。你怎么看?
我愿意编写一个协处理器来拦截查询并在二级索引表中搜索......
performance - Riak 二级索引 (2i) - 写入性能
在写入 Riak 的对象中包含二级索引 (2i) 对性能有何影响?
让我们考虑两种情况,都在一个存储桶中有大量对象。每个对象都有一个二级索引,我们称之为example_bin
(但它也可以是一个整数索引):
- 几乎每个值
example_bin
都是不同的值。对索引的一个特定值的查询只返回一个或几个对象。这样的索引可以是电子邮件地址或注册时间(作为 unix 时间戳)。 example_int
index只有几个可能的值。因此,对特定索引值的查询会返回大量对象。这样的索引可以代表一个用户类别,例如“管理员”或“客户”。
更新这些对象时对性能有何影响?我知道每次更新对象时都需要检查索引。上述任何一个示例都可以构成 Riak 的耗时或耗费资源的任务吗?
unique - 具有唯一二级/第三索引的 Dynamodb
我正准备重建一个数据库,该数据库有 3 个不同的表,所有表都包含相同的数据。不同之处在于每个用户 ID、用户名、电子邮件的 HashKey。我正在尝试将它们全部组合到一张表中,因为我认为冗余既不好又慢。我打算做的是将 UserId 作为 HashKey,并将 UserName 和 Email 作为二级索引。我还没有找到让 dynamoDb 在二级索引上强制唯一性的方法,因此计划使用条件写入来检查那些在写入数据库之前的唯一性。使用 SQL 这将非常容易,在 DynamoDb 中是否有更好的方法来做到这一点?我需要能够根据三个 UserId、UserName 和 Email 中的任何一个来查找用户。我想将此保留在一个表中,而不是使用将电子邮件引用到 UserId 或将 UserName 引用到 UserId 的另一个表。
java - 在客户端验证行比使用整个主键的二级索引更好?
在 cassandra 中,众所周知应该非常谨慎地使用二级索引。
例如,如果我有一张桌子:
这里用户名是分区键。现在我想支持当且仅当 usertype 是特定值 X 时返回特定用户(将给出用户名)的操作。
我有两种方法可以做到:
一:在用户类型上创建二级索引,可能的值('A','B','C')和用户名是分区键。
二:
我可以将带有用户名的行获取到客户端,然后检查用户类型是否为 A。
哪种方法更好?还请考虑一个宽行(不是那么大,10 秒)场景,其中并非分区的所有行都可能具有给定值(这需要一些客户端过滤)。
我不清楚二级索引是如何在特定节点中查找数据。
前任:SELECT * FROM user WHERE username='something' AND usertype='A'
例如 usertype hidden CF 有数据 'A'-> 'jhon', 'miller', 'chris',...等,100 个用户名
并且带有分区键的查询与用户类型一起给出它是扫描所有这 100 个用户名以匹配用户名“某事”,还是它只是先按用户名获取,如果它与“A”匹配,则查看用户类型列?它究竟是如何进行搜索的?给定索引在低基数数据上的查询票价如何,并且每个数据都映射到多行?
如果这很重要,我将使用 java 作为客户端。
更新: 我知道我可以在这个特定的例子中使用集群(用户类型)键,但我想知道我问过的权衡。我原来的表格要复杂得多。
amazon-dynamodb - 如何使用 DynamoDBMapper 查询具有仅具有 hashKeys 的 GSI 的 Dynamo DB
我对Dynamo DB很陌生,可能这是一个非常微不足道的问题,但我浏览了 Dynamo DB 的文档和堆栈溢出问题,但我找不到一个链接,它告诉我如何查询 DDB 以获取只有散列键的GSI和没有为相同的指定范围键。
我得到异常 Illegal query expression: No hash key condition is found in the query。
indexing - 如何在 DynamoDB 中实现可扩展的无序集合?
我正在研究在 Amazon DynamoDB 之上实现可扩展的无序对象集合。到目前为止,已经考虑了以下选项:
使用 DynamoDB 文档数据类型(地图、列表)并使用文档路径来访问独立项目。这对于收集限制为 400KB 的数据有一个明显的缺点,这意味着可能有 1..10K 个对象,具体取决于它们的大小。不太明显的缺点是将新对象插入此类集合的成本将是巨大的:亚马逊指定将根据总项目大小扣除写入容量,而不仅仅是新添加的对象 - 因此约 400 个容量单位接近大小限制时插入 1KB 对象。那么考虑到这一点排除了吗?
使用复合主散列 + 范围键,其中主散列对于集合中的所有对象保持相同,范围键只是随机或原子计数器。明显的缺点是具有相同的哈希键会导致错误的键分布——当有大量对象的集合时基数很低。这意味着分区错误,并且存在规模问题,同一集合上的所有读/写都卡在一个分片上,受到 DynamoDB 分区每秒 3000 次读取/1000 次写入的限制。
使用带有二级哈希 + 范围键的全局二级索引,其中哈希键对于属于同一集合的所有对象保持相同,而范围键只是随机的或原子计数器。与上面类似,GSI 的分区变得很差,并且它将成为一个瓶颈,因为太多相同的哈希值会迅速耗尽所有预置容量到索引。我没有找到 GSI 是如何准确实现的,因此不确定它受低基数的影响有多严重。
问题是,我是否可以忍受 (2) 或 (3) 并遭受不理想的密钥分配,或者是否有另一种实现被忽视的集合的方式,或者我应该考虑研究另一个 nosql 数据库引擎。
cassandra - cassandra 按二级索引搜索一行返回 null
我创建了一个表和索引如下
在我插入或删除数百万次数据后。我发现当我使用后续查询时无法返回任何数据。实际上,数据中有这一行。
当我通过 PRIMARY KEY 查询时
它返回数据:
但是当我通过二级索引查询时,它返回null。
谢谢
database - Apache Phoenix 二级索引的工作原理
二级索引如何与 Phoenix 配合使用。我有一个 HBASE 数据库设置,它是通过直接插入 HBASE 而不是通过 Phoenix 插入查询来更新的。但是所有的选择都将通过 Phoenix 选择查询来完成。Phoenix 二级索引在这些选择查询中仍然有效吗?
c#-4.0 - 使用全局二级索引的 .net queryAsync 方法的 AWS sdk 失败
下面给出的是我用来从 Dynamodb 表中检索详细信息的方法。但是当我调用这个方法时,它最终抛出了一个异常“无法找到关键属性约会 ID 的属性”。这个特定表的主键是约会ID,但我已经在 PatientId 列上创建了一个全局二级索引。我在下面的查询中使用该索引来通过给定的患者 ID 获取预约详细信息。
amazon-dynamodb - DynamoDB Xcode6 Swift 使用三列作为键
我正在尝试使用 DynamoDB 表来存储这些数据:
DartsPlayerInsultTable
使用此处描述的方法(概念,而不是代码):
这里:
和这里:
我希望每个客户玩家有多个侮辱记录。CustomerId 是我的哈希键 PlayerId 是我的范围键,我试图在键中使用 PlayerInsult,以便第二个 PlayerInsult 值插入第二条记录,而不是替换现有的记录。
为此尝试了全局索引和二级索引,但如果我尝试添加新的侮辱行,它仍然会用相同的客户-玩家密钥替换侮辱,而不是添加新的。
DynanoDB 对此的最佳使用方法有什么建议吗?我是否需要为范围键创建混合列?试图保持这个简单...