我一直在查看Nosql的维基百科页面,它列出了Key / Value商店数据库的几个变体,但是在这个上下文中我找不到关键/值存储意味着什么的任何细节.有人可以向我解释或链接一个解释吗?另外,我什么时候会使用这样的数据库?
您熟悉键/值对的概念吗?假设您熟悉
Java或C#,它在语言中作为map / hash / datatable / KeyValuePair(最后一个是在C#的情况下)
它的工作方式在这个小样本图表中得到了证明:
Color Red Age 18 Size Large Name Smith Title The Brown Dog
你有一个键(左)和一个值(右)…注意它可以是一个字符串,整数等.大多数KVP对象允许您在右侧存储任何对象,因为它只是一个值.
由于您将始终拥有要返回的特定对象的唯一键,因此您只需查询数据库中的唯一键,并从具有该对象的任何节点返回结果(这就是为什么它对分布式系统有用,因为涉及其他事情,例如轮询前n个节点以返回与其他节点匹配的值返回).
现在我上面的例子非常简单,所以这里是KVP稍微好一点的版本
user1923_color Red user1923_age 18 user3371_color Blue user4344_color Brackish user1923_height 6' 0" user3371_age 34
因此,您可以看到简单的密钥生成是将“user”放入用户唯一的数字,下划线和对象.同样,这是一个简单的变体,但我认为我们开始明白,只要我们可以在左边定义部分并使其一致格式化,我们就可以得出值.
请注意,键值没有限制(确定,可能存在一些限制,例如纯文本)或者值属性(可能存在大小限制),但到目前为止,我还没有真正复杂的系统.让我们再尝试一下:
app_setting_width 450 user1923_color Red user1923_age 18 user3371_color Blue user4344_color Brackish user1923_height 6' 0" user3371_age 34 error_msg_457 There is no file %1 here error_message_1 There is no user with %1 name 1923_name Jim user1923_name Jim Smith user1923_lname Smith Application_Installed true log_errors 1 install_path C:\Windows\System32\Restricted ServerName localhost test test test1 test test123 Brackish devonly wonderwoman value key
你明白了……所有这些都存储在分布式节点上的一个巨大的“表”中(背后有数学),你只需要通过名称询问分布式系统所需的值.
至少,这是我对它如何运作的理解.我可能有一些错误,但这是基础知识.