Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 大规模更新NoSQL文档:不良做法?_Mongodb_Nosql - Fatal编程技术网

Mongodb 大规模更新NoSQL文档:不良做法?

Mongodb 大规模更新NoSQL文档:不良做法?,mongodb,nosql,Mongodb,Nosql,我在MongoDB数据库中存储了两个集合: ==网站== id 昵称 网址 ==支票== id 网站id 地位 我想用适当的网站昵称显示检查状态列表 例如: [Google,200]如果只有少数几个网站,我会选择选项1——不像在关系/SQL世界中那样干净和规范化,但它可以工作,而且比尝试模拟MongoDB的连接要轻松得多。MongoDB或任何其他NoSQL数据库需要记住的一点是,您通常会做出某种权衡——没有什么是免费的。我个人非常重视无模式的面向文档的数据设计,对于我使用它的应用程序,我很容

我在MongoDB数据库中存储了两个集合:

==网站==

id
昵称
网址
==支票==

id
网站id
地位

我想用适当的网站昵称显示检查状态列表

例如:


[Google,200]如果只有少数几个网站,我会选择选项1——不像在关系/SQL世界中那样干净和规范化,但它可以工作,而且比尝试模拟MongoDB的连接要轻松得多。MongoDB或任何其他NoSQL数据库需要记住的一点是,您通常会做出某种权衡——没有什么是免费的。我个人非常重视无模式的面向文档的数据设计,对于我使用它的应用程序,我很容易做出权衡(比如没有连接和事务)


这就是说,这是一种权衡——所以在这种情况下,有一件事要问自己,为什么我要使用MongoDB或其他NoSQL数据库?是的,它很时髦而且很“热”,但我要确保您所做的对于NoSQL方法来说是有意义的。如果您花费大量时间解决缺少联接和外键的问题,在SQL世界中,没有事务和其他您习惯的事情,我会认真考虑这是否最适合您的问题。

如果只有少数几个网站,我会选择选项1-没有关系/SQL世界中那样干净和规范化,但与尝试用MongoDB模拟连接相比,它工作起来更有效,痛苦更少。MongoDB或任何其他NoSQL数据库需要记住的一点是,您通常会做出某种权衡——没有什么是免费的。我个人非常重视无模式的面向文档的数据设计,对于我使用它的应用程序,我很容易做出权衡(比如没有连接和事务)


这就是说,这是一种权衡——所以在这种情况下,有一件事要问自己,为什么我要使用MongoDB或其他NoSQL数据库?是的,它很时髦而且很“热”,但我要确保您所做的对于NoSQL方法来说是有意义的。如果您花费大量时间解决缺少联接和外键的问题,在SQL世界中,没有事务和其他您习惯的事情,我会认真考虑这是否最适合您的问题。

如果只有少数几个网站,我会选择选项1-没有关系/SQL世界中那样干净和规范化,但与尝试用MongoDB模拟连接相比,它工作起来更有效,痛苦更少。MongoDB或任何其他NoSQL数据库需要记住的一点是,您通常会做出某种权衡——没有什么是免费的。我个人非常重视无模式的面向文档的数据设计,对于我使用它的应用程序,我很容易做出权衡(比如没有连接和事务)


这就是说,这是一种权衡——所以在这种情况下,有一件事要问自己,为什么我要使用MongoDB或其他NoSQL数据库?是的,它很时髦而且很“热”,但我要确保您所做的对于NoSQL方法来说是有意义的。如果您花费大量时间解决缺少联接和外键的问题,在SQL世界中,没有事务和其他您习惯的事情,我会认真考虑这是否最适合您的问题。

如果只有少数几个网站,我会选择选项1-没有关系/SQL世界中那样干净和规范化,但与尝试用MongoDB模拟连接相比,它工作起来更有效,痛苦更少。MongoDB或任何其他NoSQL数据库需要记住的一点是,您通常会做出某种权衡——没有什么是免费的。我个人非常重视无模式的面向文档的数据设计,对于我使用它的应用程序,我很容易做出权衡(比如没有连接和事务)


这就是说,这是一种权衡——所以在这种情况下,有一件事要问自己,为什么我要使用MongoDB或其他NoSQL数据库?是的,它很时髦而且很“热”,但我要确保您所做的对于NoSQL方法来说是有意义的。如果您花费大量时间解决缺少联接和外键的问题,在SQL世界中,没有任何事务和其他事情,我会认真考虑这是否适合您的问题。

< p>您可以考虑第三个选项:取消<代码>检查<代码>集合,并将每个网站的检查嵌入到每个代码>网站<代码>文档中。 这样可以避免任何连接,也可以避免不一致,因为如果没有
网站
它所属的
检查
就不可能存在

但是,只有当
检查每个文档的
数组时,才建议这样做。随着时间的推移,数组保持相对恒定,并且不会不断增长。在MongoDB中应避免快速增长的文档,因为每次文档大小翻倍时,它都会移动到存储在其中的物理文件中的不同位置,这会减慢写入操作。此外,MongoDB对每个文档有16MB的限制。存在此限制主要是为了阻止文档增长


您尚未说明应用程序中的
检查实际上是什么。当它是一个定期执行的任务列表,并且只是偶尔对其进行更改时,嵌入不会有什么问题。但是,当您收集所有检查的历史结果时,我宁愿建议将每个结果(set)放入自己的文档中以避免文档增长。

< P>您可以考虑第三个选项:去掉<代码>检查< /代码>集合,并将每个网站的检查嵌入到每个代码>网站<代码>文档中。 这样可以避免任何连接,也可以避免不一致,因为如果没有
网站
它所属的
检查
就不可能存在

但是,只有当
检查每个文档的
数组在整个过程中保持相对恒定时,才建议这样做