Déb*_*ora 5 nosql amazon-dynamodb
我是NoSql和DynamoDb的新手,但是来自RDBMS ..我的表正从MySql移动到DynamoDb.我有表:
customer(列:cid [PK],名称,联系人)
硬件(列:hid [PK],名称,类型)
租(列:rid [PK],cid,hid,time).=>这是客户与硬件项的关联.
一个客户可以拥有许多硬件项,一个硬件项可以在许多客户之间共享.
要求:单独的客户列表和hadware项目应该能够检索.
租赁细节 - 哪个客户借用哪个Hardeware Item.
我提到了这个 - 二级索引表.这是关于将所有列保留在一个表中.
我想有2个DynamoDb表:
Customer - 它具有类似于列和一组硬件项哈希键的所有属性.(然后我的问题是,当查询客户表以仅检索客户时,也会加载所有硬件密钥.)
请问表格结构的任何指导?如何保存,加载甚至更新?
请问任何java样本?(找不到任何类似于我的场景的有用资源)
Yu *_*ang 11
查看DynamoDB的邻接列表设计模式 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html
在您的情况下,基于邻接列表设计模式,您的模式可以设计如下
:分区键和排序键的前缀表示记录的类型.
如果记录类型是customer,则分区键和排序键都应具有前缀"customer-".
如果记录是客户租用硬件,则分区密钥的前缀应为"customer-",排序密钥的前缀应为"hardware-"
base table
+------------+------------+-------------+
|PK |SK |Attributes |
|------------|------------|-------------|
|customer-cid|customer-cid|name, contact|
|hardware-hid|hardware-hid|name, type |
|customer-cid|hardware-hid|time |
+------------+------------+-------------+
Global Secondary Index Table
+------------+------------+----------+
|GSI-1-PK |GSI-1-SK |Attributes|
|------------|------------|----------|
|hardware-hid|customer-cid|time |
+------------+------------+----------+
Run Code Online (Sandbox Code Playgroud)
客户和硬件应存储在同一个表中.客户可以参考硬件,
SELECT * FROM base_table WHERE PK=customer-123 AND SK.startsWith('hardware-')
如果你的硬件想要回顾客户,你应该使用GSI表
SELECT * FROM GSI_table WHERE PK=hardware-333 AND SK.startsWith('customer-')
注意:我写的SQL只是伪代码,只为你提供一个想法.
归档时间: |
|
查看次数: |
4032 次 |
最近记录: |