我之前从未使用过NoSQL,通常我编写的应用程序需要关系。但是,我遇到了一些我不知道该怎么做的事情。到目前为止,我只是在设计数据库。目前,我的主要逻辑是在MySQL数据库中。我有静态内容,我将通过CDN托管。但是,我的动态内容将会更新,但很少会在每次请求时阅读 - 例如电话号码,电子邮件地址,地址,其他信息。它们不会用于搜索,但是这些数据是非结构化的。用户可以拥有多个电子邮件地址,电话号码和地址;多个表格需要它们。因此,在这种情况下使用关系数据库失败了我的需求(我不想为此创建实体 - 属性 - 值表),因为我知道它不会影响逻辑 - 它只用作“元 - 数据“我想让它们保持JSON格式。谷歌进入一段时间之后,我发现MongoDB在JSON中存储“文档”,这听起来像是完美的解决方案。但是,我有一个问题。如何将这些数据库连接在一起?我是否需要在创建/更新上为文档添加user_id或organization_id“column”/ field,并执行“select”查询(MongoDB中的等效项)以接收元数据?或者有不同的方式吗?
答案 0 :(得分:1)
我将在此提出我的看法。你在这里尝试做的事情被称为"多语言持久性"。如果你介绍mongo,你将有2个架构用于存储你的数据,不同的强度,api,设计,什么不是,这有它的价格。
Mongo DB,是一款出色的产品,我自己使用它取得了巨大的成功,但你必须明白它并没有提供你期望从像MySQL这样的RDBMS所具有的所有功能。例如,它完全没有交易。 此外,如果您同时存储在MySQL和Mongo中,您必须自己关心数据完整性(如果作为逻辑事务mysql事务的一部分成功,但mongo无法存储数据会发生什么),则不会回滚。 .. 我相信你已经明确了我的观点。
是的,mongo真的允许通过各种JSON参数进行查询,实际上它具有整个查询语言,它在某种程度上类似于SQL,但它并不是真正的"关系"查询引擎,因为mongo不是关系数据库,所以你没有JOINs。但是你已经自己说过你不会在这些领域进行搜索,所以我不明白你使用mongo会有什么好处。也许这只是关于术语,但我对这个陈述有点困惑。
当你拥有大量数据(毕竟它是一个大数据产品)时,mongo真的很闪耀,那么你就有了像副本集和分片这样有趣的东西,但问题是你是否真的需要它?你真的拥有"大数据" - 真的需要存储大量的物品吗?
作为替代方案,我想也许您可以使用文本列来存储JSON"原样"。我的意思是,你可能有一个列,存储JSON。 你甚至有时候会有" JSON"在数据库中键入本机类型,我不确定MySQL是否支持它。 在这种情况下,您甚至可以对这些jsons执行某些操作(例如,追加,部分更新等)。
当然,选择权归你所有,我要说的是你应该考虑在使用2个持久性引擎时是否有更多的好处,或者会让你的项目变得更复杂。
希望这有帮助