fru*_*vos 19 amazon amazon-web-services nosql node.js amazon-dynamodb
我是DynamoDB的新手(以及一般的noSQL),我正在努力解决一些概念问题.有一件事特别是给我一些问题,即基于布尔键查询表.
我意识到我无法在布尔键上创建主索引或辅助索引,但我看不出如何理想地索引和查询具有以下结构的表;
reportId: string (uuid)
reportText: string
isActive: boolean
category: string
Run Code Online (Sandbox Code Playgroud)
我希望能够完成以下搜索:
reportId)这些都很简单,但我想执行另外两个查询;
我的第一个方法是建立在主hashkey指数isActive,与上一rangekey category,但我只能够选择String,Number的Boolean作为键类型.
存储isActive为字符串(保存为'true'而不是布尔值true)可以解决问题,但是使用字符串作为布尔属性非常糟糕.
我错过了什么吗?有没有一种简单的方法可以直接在布尔值上查询表?
任何建议得到适当的赞赏.
提前致谢.
rea*_*not 27
我的项目包括这个特定场景,我遵循DynamoDB 在本地和全局二级索引上使用稀疏索引的最佳实践.以下是我对你的例子做的事情:
Table: reportId (string, hash key) || reportText (string) || isActive (string, marked as "x") || category (string)
ActiveReportsIndex (Local Secondary Index): reportID (hash key) || isActive (range key)
ActiveReportsByCategoryIndex (Global Secondary Index): category (hash key) || isActive (range key) || reportId
Run Code Online (Sandbox Code Playgroud)
稀疏索引背后的想法是只有标记为isActive的报告:"x"将显示在索引中,因此它们应该比主表需要更少的存储和处理.不要将isActive属性设置为总是存储true或false值的布尔类型,而是在报表处于活动状态时使用类似"x"的字符串或任何其他所需的字符串,并在报表处于非活动状态时完全删除该属性.说得通?
| 归档时间: |
|
| 查看次数: |
6254 次 |
| 最近记录: |