database - 如何以最少的重复将翻译存储在 nosql DB 中?
问题描述
我在 DynamoDB 中得到了这个模式
{
"timestamp" : "",
"fruit" : {
"name" : "orange",
"translations" : [
{
"en-GB" : "orange"
},
{
"sv-SE" : "apelsin"
},
....
]
}
我需要将对象的翻译存储在 DynamoDB 数据库中,以便能够有效地查询它们。例如,我的查询必须类似于“给我翻译数组包含的所有对象”
问题是,这是一个非常愚蠢的想法吗?那里有 6500 种语言,这意味着我将强制所有条目包含一个包含数千个属性的数组,其中 99% 为空字符串值。有什么更好的方法?谢谢,
解决方案
我宁愿另存为。
{
"primaryKey" : "orange",
"SecondaryKey": "en-GB"
"timestamp" : "",
"Metadata" : {
"name" : "orange",
}
并创建一个二级索引,SecondaryKey 为 PK,primaryKey 为 SK。
通过这样做,您可以查询
在 en-GB 中给我橙色。
en-GB 中存在的所有密钥是什么
如果您一次更新多个项目。您可以像这样创建 1 个对象
{
"KeyName" : "orange",
"SecondaryKey": "master"
"timestamp" : "",
"fruit" : {
"name" : "orange",
"translations" : [
{
"en-GB" : "orange"
},
{
"sv-SE" : "apelsin"
},
....
]
}
并创建一个 lambda 函数,该函数对上述对象进行非规范化并在 dynamodb 中创建多个实体。但是您也必须创建删除元素。如果在新对象中不存在某种语言。
推荐阅读
- c++ - SteamVR 覆盖控制器输入?
- javascript - 如何锁定范围组中的多个单元格,Excel - Web AddIns Office.js API
- c# - 通过 MEF 导入在子类中设置继承的属性
- amazon-web-services - 在私有子网中部署 lambda。创建 Lambda 函数时出错 (1):ValidationException 状态码:400,请求 id
- amazon-web-services - Aws 组织 - 将会员帐户移交给其他方
- javascript - 为什么不在 React 组件中使用全局变量
- r - 如何在 R markdown 中生成动态标题?
- java - 列表列表的元素为空,即使添加的项目不是
- python - django fileuploader 块方法没有按预期工作
- java - 应为 BEGIN_ARRAY,但在第 1 行第 1 列路径 $ 错误处为 STRING