考虑一个键值对,其中键和值都是字符串。例如..
从长URL映射到短URL的键值对,反之亦然。
长网址->短网址。
no-SQL的一个主要优点是,由于将整个数据(分布在关系数据库中的许多表中)存储为一个文档(Couchbase)或一个值(Redis),因此不需要表连接。在这种情况下,我们的值是一个简单的String,而不是分布在多个表中的某个对象。
因此,此处不涉及任何联接或多个表查找,并且此处无SQL数据库并不优越。关系数据库同样会很好。
甚至对于简单值,no-SQL数据库(例如,Redis是一个键值对存储)是否优于关系数据库?
最佳答案
我认为您对这个问题的一般理解是正确的,尽管NoSQL供应商可能会声称他们还提供了其他好处-主要是“横向扩展(只有在最终一致性的情况下,才能实现的扩展)”。
他们可能不会告诉您许多SQL数据库也可以进行一定程度的扩展(通常是通过复制,但是也有更高级的概念)。但是,由于大多数SQL数据库采用严格的SQL一致性模型,因此横向扩展功能通常限于不放弃一致性的情况下可能进行的扩展。但即使在那儿,也存在异常(exception)情况,例如asynchrosnus复制(用于只读负载),“master-master”复制(用于读/写负载)。
关于您的原始问题(规范化,联接),我还想补充一点,SQL数据库需要而不是要求您将数据拆分为单独的列或将它们分布在表中。他们通过这种方式提供来做事,但是它们还允许您将JSON文档存储在单个列中,从而将参数扩展到所有文档存储。
如果您有15分钟的空闲时间,请看一下我讲的这段录像:https://www.youtube.com/watch?v=swR33jIhW8Q
关于sql - 对于具有简单值的键值对,关系数据库是否不如Redis这样的No-SQL数据库那么好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56616215/