DynamoDb 是一个键值数据库,带有添加二级索引的选项。最好存储不需要全扫描或聚合查询的文档。如果您将分层文档应用程序设计为一次只显示一个文档,那么 DynamoDB 将是一个不错的选择。您可以将文档的结构如下:
DocumentTable:
{
"title": "Python",
"parent_document": "root"
"child_documents": ["Classes", "Built In", ...]
"content": "text"
}
在哪里:
parent_document
- 父文档的“标题”,在您的示例中,对于标题为“类”的文档,“Python”可能为空
content
- 带有注释、竖起大拇指等的文本或非结构化文档,但您不打算对其执行条件查询,否则您需要全局二级索引。但是由于您不会有很多文档,因此对表格进行全面扫描不会花费很长时间。
您还可以为用户的分层文档创建另一个包含目录的表格,您可以使用它来更轻松地浏览文档,但是在这种情况下,您需要注意此表格的一致性。
例子:
ContentsTable:
{
"user": -- primary key for this table in case you have many users
"root": [
"Python":[
"Classes": [
"General": [
"Information on Classes Text Wall"
]
]
]
]
}
其中Python
、Classes
和是General
的Information on Classes Text Wall
键DocumentTable.title
。您还可以使用某些东西而不是标题来保持键的唯一性。DynamoDB 最大文档大小为 400 KB,因此对于非常大的目录来说这已经足够了