- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Amazon DynamoDB 中有一个员工表(即项目)。该表的属性是 {employee_id, name, manager_id}
该类在 Java 中使用以下方式表示:
@DynamoDBTable(tableName = "Employee")
public class Employee {
private String employeeId;
private String name;
private List<Employee> subordinates;
@DynamoDBHashKey
public String getEmployeeId() {
return employeeId;
}
public void setEmployeeId(final String employeeId) {
this.employeeId = employeeId;
}
@DynamoDBAttribute(attributeName = "name")
public String getIntegerAttribute() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Employee> getSubordinates() {
return subordinates;
}
public void setSubordinates(List<Employee> subordinates) {
this.subordinates = subordinates;
}
}
给出以下组织结构图
A
-B
|
--- B1
|
--- B2
-C
|
--- C1
如果我请求员工A、B和C应加载为A的下属。B1和B2应加载为B的下级。C1应加载为C的下级。
使用 Hiberate 的 @OneToMany 注解可以轻松实现上述功能。在 Dynamo 中实现这一目标的推荐方法是什么?
谢谢!
最佳答案
DynamoDB 的 HashRange 架构本身支持一对多。
您可以像这样创建表格:
Subordinate-Table (for storing relationship)
HashKey: EmployeeId (for manager)
RangeKey: EmployeeId (for subordinates)
Employee-Table (for storing employee info)
HashKey: EmployeeId
Attribute: Name
对于您的示例组织结构图,您的从属表将如下所示:
Hash: A Range: B
Hash: A Range: C
Hash: B Range: B1
Hash: B Range: B2
Hash: C Range: C1
要获取经理A的所有下属,只需执行dynamdob.query(HashKey=="A")
关于直接获取员工数据而无需额外调用员工表的问题:您可以将上面的两个表合并为一个表:
Company-Structure-Table:
HashKey: EmployeeId (manager)
RangeKey: EmployeeId (subordinates)
Attribute: Name (name of the subordinate)
关于避免手动获取经理下面的所有下属(递归搜索)的第二个问题,我的想法是:DynamoDB 为您提供了一个数据库原语,您可以在其上构建应用程序。您希望设计模式以使原语非常高效。您可以在 DynamoDB 之上构建自己的逻辑。递归搜索经理下面的所有员工是这些特定于应用程序的逻辑之一。您可以轻松构建它并对其进行并行化。我认为映射器库不包含它。
关于java - DynamoDBMapper 注释。一对多映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29069224/
我的数据库表由多行组成,其 id 是唯一的。 API(Endpoint) -> 获取 id 的行我正在传递输入数组 (id1,id2,id3,id4) Question : In DynamoDBMa
我正在尝试使用 Java API 在 DynamoDB 中创建表。 问题:它只在表中创建哈希键索引,没有其他属性。 private void createTable(DynamoDBMapper ma
在低级 API 上使用 DynamoDBMapper 是否会影响性能?我想性能开销会很小甚至微不足道,但我无法在网上找到任何这样的引用资料。 在线示例还显示了在 POJO 本身上使用的映射器注释。这是
我正在尝试将我的 Android 应用程序连接到 AWS DynamoDB,但我无法创建 DynamoDBMapper 对象并导入该库: import com.amazonaws.mobileconn
我试图根据两个不同列的组合使表中的项目保持唯一。 我有一个 instanceId 和 imageId 列(以及其他列),并且基于 Stackoverflow 上的几篇文章和 AWS Forums以下应
使用 Java DynamoDBMapper,我如何才能仅在对象不存在时保存它(基于主键)。如果确实存在,我希望抛出异常或失败,而不是更新现有条目。 最佳答案 我相信你应该能够用 DynamoDbSa
我在 Amazon 的 AWS 工具包中遇到基于 Java 的 DynamoDBMapper 问题,抛出“无法实例化类”异常错误。这是我第一次尝试使用 DBMapper,所以我不确定我是否已正确设置所
我正在使用 DynamoDBMapper,当且仅当散列键和范围键组合不存在时,我想有条件地保存。我知道有一些方法可以使用 UUID 来减少碰撞的可能性,但我想通过使用条件保存来保护自己。 我遇到了 t
我正在使用散列键查询 DynamoDB 表。表中的每条记录由哈希键和范围键唯一标识 DynamoDBMapper mapper; .... MyClass myClass = new MyClass(
我正在研究一种保存到 DynamoDB 的方法。如果表中不存在该值,我希望该方法能够保存。如果确实存在,我想应用条件更新。我正在使用 DynamoDBMapper 的保存方法。 我目前的代码成功地进行
这是我想测试的一段代码 ... DynamoDBQueryExpression queryExpression = createQueryForLatestOrders(orderId, storeI
当我尝试从 DynamoDB 表获取一组分页数据时,它可以正常工作,但前提是它要查找的数据位于表的顶部。如果它更深入(我按 user_alias 排序数据,每个别名有 100 个元素),它不会返回任何
我在 Amazon DynamoDB 中有一个员工表(即项目)。该表的属性是 {employee_id, name, manager_id} 该类在 Java 中使用以下方式表示: @DynamoDB
我刚刚开始我的第一个 DynamoDB 项目,我一直在尝试尽可能多地阅读文档。我认为我的项目的最佳可能性是在 SDK 中使用高级 DynamoDbMapper 以允许 CRUD 操作。 在 Dynam
当您想要以下条件时,是否可以使用 DynamoDB 映射器进行有条件的写入/更新:如果属性不等于 X 则写入?我想做一个有条件的写,做这样的事情: DynamoRecord record = mapp
我已经开始使用 DynamoDB 并在 DynamoDBMapper 上看到了这条指令 http://aws.amazon.com/articles/0802321832592496 假设我有一个用户
我在 Scala 中有以下 DynamoDB 项目 @DynamoDBTable(tableName = Table) class DynamoItem { private var indexId
我想从 Dynamo DB 表中获取所有记录,并将它们映射到一个 POJO 数组中; POJO 很简单并且已经注释了。 DynamoDBMapper 似乎是将执行提取以获取记录并将它们反序列化到我的
DynamoDBMapper 提供了从 Map 构建对象的方法 JavaDoc : public T marshallIntoObject(类 clazz, map 项属性, DynamoDBMapp
在用 Kotlin 编写的 AWS Lambda(即不是 Android)中使用 DynamoDBMapper,我可以使用数据类保存记录。但是,当我尝试将记录加载到数据类时,我收到“DynamoDBM
我是一名优秀的程序员,十分优秀!