基于键值的数据库,有人可以向我解释如何实际使用它们吗?

Bla*_*man 5 database performance scalability key-value

基于键/值的数据库似乎有很大的推动力,我相信memcache.

值通常是哪种集合或xml文件可以容纳更有意义的数据?

如果是,通常更快地反序列化数据然后进行传统JOINS并选择返回基于行的结果集的表吗?

Ton*_*ews 6

现在的情况是,一些真的,真的,真的大网站像谷歌和亚马逊占据一个很小,很小的小众,他们的数据存储和检索需求是如此的不同,以别人的是存储/检索数据的新方法被调用.我相信这些人知道他们在做什么,他们非常擅长他们的工作.

但是,这会被拾取并报告并变形为"关系数据库无法处理网络数据".此外,读者开始认为"嘿,如果关系数据库对亚马逊和谷歌不够好,它们对我来说还不够好."

这些推论都是错误的:99.9%的数据库(包括网站背后的数据库)与亚马逊和谷歌不在同一个球场 - 不在几个数量级之内.对于这99.9%,没有任何改变,关系数据库仍然可以正常工作.


Rex*_*x M 3

与大多数事情一样,“视情况而定”。如果联接相对无关紧要(即,对关键数据进行少量联接),并且您要存储特别复杂的数据,则最好坚持使用更复杂的查询。

这也是一个新鲜度的问题。在许多情况下,许多联接的目的是将非常不同的数据组合在一起;也就是说,数据的相对新鲜度差异很大。当更新大量对中的一小部分数据时,保持键值对表同步会增加相当大的复杂性和开销。系统复杂性通常可以被视为性能成本的一种形式;在不影响性能的情况下对复杂系统进行更改所需的时间、风险和成本通常远远大于简单系统。

最好的解决方案始终是尽可能简单地编写有效的代码。在大多数情况下,我会说这意味着创建一个完全规范化的数据库设计并加入其中的垃圾。只有在性能成为明显问题后才重新审视您的设计。当您分析问题时,问题所在以及需要采取哪些措施来解决这些问题也会很明显。如果它减少连接,那就这样吧。当你需要知道的时候你就会知道。