Jam*_*vec 7 normalization left-join relational-database mongodb nosql
我听到的更多left joins,但是还有人给我一个清楚的解释,用它来代替它left joins.
我读过它无法做到left joins,所以我试图找出你如何能够使用这样的数据存储.从阅读:通过MongoDB中的代码保留连接似乎是一个建议就是创建一个大表,就好像你已经在它上面进行了连接一样.
如果上面的陈述是真的,那么我可以看到它是如何使用的.但是我很好奇你如何处理重复数据...作为规范化的概念,可以帮助你消除冗余并确保数据的一致性(例如像大写,空白等轻微修改)......
我们只是为了可扩展的速度而牺牲数据的一致性,还是我错过了什么?我们非常感谢任何澄清,以及帮助我理解的任何资源.
美东时间
我一直在做更多的挖掘,并找到了以下问题的答案,有助于澄清我的理解:
从这些答案来看,我对一致性的理解似乎是正确的.看起来似乎left joins是用于特定的问题类型,如果你需要关系,你应该使用关系数据库.
但这引发了更多的问题,如:
left joins与何时不使用?left joins数据,您应该能够解决关系数据库所做的所有相同问题......但是有关于如何left joins使用关系数据库进行数据的规则.是否有可用于帮助left joins数据使用left joins解决方案的规则?left joins解决方案的任何示例left joins?Phi*_*ipp 13
MongoDB能够拥有包含其他文档数组的文档.这解决了许多在reational数据库中存在关系的情况.
当发票有多个头寸时,您不会将这些头寸放入单独的集合中.你会把它们嵌入一个数组.
这让我想知道何时使用NoSQL与不使用NoSQL的现实生活中的例子?
有许多不同的NoSQL数据库,每个数据库都考虑到不同的用例.但是你把这个问题标记为MongoDB,所以我认为你的意思是MongoDB.
与关系数据库相比,MongoDB有两个主要优点.
首先,它很好地扩展.
当数据库太慢或太大时,您可以通过创建多个分片的集群或副本集来轻松添加更多服务器.对于大多数关系数据库,这几乎不起作用.
其次,它允许异构数据.
想象一下,例如,计算机硬件商店的产品数据库.产品有哪些特性?所有产品都有价格和供应商.但CPU具有时钟速率,硬盘驱动器和RAM芯片具有容量(并且这些容量无法比较),显示器具有分辨率等等.你会如何在关系数据库中设计它?您可以创建一个非常长的productID-property-value表,也可以使用您可以想象的每个属性创建一个非常宽且稀疏的产品表,但NULL大多数产品都适用于大多数产品.两种解决方案都不是很优雅.但MongoDB可以更好地解决这个问题,因为它允许集合中的每个文档具有不同的属性集.
什么不能呢?
作为一项相当新的技术,关于它的文献并不多.围绕它的软件生态系统也不是那么好.您可以为关系数据库获得的工具通常更加闪亮.
还有一些用例MongoDB不太适合.
通过对数据进行非规范化,您应该能够解决关系数据库所做的所有相同问题......但是有关于如何使用关系数据库规范化数据的规则.是否有规则可以帮助他们对数据进行非规范化以使用NoSQL解决方案?
关系数据库大约有40年的历史.他们的理论是计算机科学中一个研究得很好的课题.有关于它们背后的理论的书籍全书.到目前为止,每个可以想象的角落都有一个书籍解决方案.
但另一方面,NoSQL数据库是一种相当新的技术.我们仍在研究最佳实践.最常见的建议是:"使用自己的头脑.考虑最常执行的查询,并为他们优化数据模式."
您可能想要考虑将NoSQL解决方案与关系数据库并行使用的任何示例?
如果可能,我建议不要在同一产品中使用两种不同的数据库技术:
我只建议在满足您的要求时混合使用数据库技术,而不仅仅是变得困难而且在物理上是不可能的.否则,请选择并坚持下去.