【发布时间】:2017-07-17 08:19:03
【问题描述】:
TL;DR:如果选择在文档的_id 中使用address 和lastname 之类的字段,您如何处理对address 和lastname 的更新?在多设备、有时是离线环境中扩展。
我正在寻找使用文档_id 中将来可能会更改的字段的最佳做法。例如,address 和/或 lastname。不仅客户的地址可以更改,而且如果用户错误地输入了错误的地址怎么办?如果在文档被跨设备复制并在多个设备上更新之后才发现错误怎么办?
有没有办法处理对_ids 的更新?例如,使用新的_id 创建一个全新的文档并删除旧文档?但这是否可以在多设备、有时是离线世界中扩展?
例如:
{
"_id": "Jane-Smith",
"address": "44 street, Boston, MA 93999",
"telephone": "8888888888"
}
要处理有多个同名客户的情况,在客户名称中添加一些东西是否有意义?
{
"_id": "Jane-Smith-7ae78c",
"address": "44 street, Boston, MA 93999",
"telephone": "8888888888"
}
优点:
- 节省空间
- 由于
_id是主键,使用_id的搜索速度更快
缺点:
- 如果
_id中使用的属性发生变化怎么办?将对陈旧数据执行搜索。如果您使用更新的_id创建一个新文档,跨同步数据库的哪些实现可能会进行离线更改?
更新:
这篇文章很有帮助:
https://davidcaylor.com/2012/05/26/can-i-see-your-id-please-the-importance-of-couchdb-record-ids/
我没有意识到_ids 可以由address 和 lastname 组成。 但是,如果客户的地址和/或姓名发生变化怎么办?
我正在尝试以正确的方式将 customer 数据存储在 PouchDB / CouchDB 中。
【问题讨论】:
-
是否有必要在
_id中使用adress或lastname等字段?为什么不只使用 GUID?正如您提到的,这应该可以防止冲突和更改值。节省空间和提高性能很重要,但请记住,过早的优化是万恶之源。 -
这正是我的问题。我目前倾向于使用默认的 GUID 方法。但是,我也很好奇在
_ids 中使用可能随时间变化的字段是否被认为是一种好习惯。