首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果是密钥的话,KVS应该在文档中吗?

如果是密钥的话,KVS应该在文档中吗?
EN

Stack Overflow用户
提问于 2020-01-12 00:18:08
回答 1查看 36关注 0票数 0

假设我有一个KVS数据库,其中键是文档ID。文档是JSON和XML,可以在其中获取文档ID。例如:

代码语言:javascript
复制
c62a3ecd-696b-4c9e:{"document-id": "c62a3ecd-696b-4c9e", ... }

在这两种情况下都有ID是好的做法吗?

如果没有,是否应该将其放置在JSON/XML中?我们怎么知道数据库是否腐败?

如果是的话,每个检索都需要重复检查它们是相同的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-13 17:29:41

复制KV数据库的JSON或XML值中的标识符不是一个好主意。它将复制信息,如果您“克隆”文档,它可能会变得不同步。也就是说,如果要基于先前存储的文档插入新文档,则需要更新document["uid"]字段。

简单地说,您不需要在值中存储UID,因为它已经存储在键中。

但是,在代码中,当检索给定对象时,可以将其与标识符关联。以便您可以更新正确的记录文档。

在JavaScript中,您将得到以下结果

代码语言:javascript
复制
function ref(uid) { /* retrieve the JSON document with the given UID */ }
function update(uid, object) { /* update the record UID with the JSON object OBJECT */ }


// let's say you know the identifier (UID) of a document, you can retrieve
// it with the `ref` function

let uid = 'P4X432'
let myDocument = ref(uid)

// update one field of the document

myDocument["website"] = "https://hyper.dev"

// now you need to save it, re-use the original identifier

update(uid, myDocument)

因此,最终,您可能会得到一个JavaScript对象或类似于以下内容的类:

代码语言:javascript
复制
myDatabaseRecord = {
  "uid": "P4X432", 
  "document": {
    "website": "https://hyper.dev", ...
  }
}

mongodb客户端就是这样做的。如果我没记错的话,在nodejs客户端库中,objectid使用一个特殊的键$id来描述文档的标识符,例如:

代码语言:javascript
复制
object = { 
  "$id": "P4X432",
  "website": "https://hyper.dev",
  ...
}

除了$id之外,所有东西都将存储在KV数据库的值中。该appraoch的工作范围,它将需要做的部分副本(!)要构建将存储在数据库中的JSON文档(注意:在这种情况下不可能发生变异),您将得到性能较差的代码。

代码中的活动与数据库中的活动是不同的。要记住的重要一点是,在代码中需要跟踪文档的标识符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59699878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档