什么是键值数据库?
键值数据库(也称为键值存储和键值存储数据库)是一种NoSQL数据库,它使用简单的键/值方法来存储数据。
键值部分是指数据库将数据存储为键/值对的集合这一事实。这是一种存储数据的简单方法,并且可以很好地扩展。
键值对在许多编程语言中是一个成熟的概念。编程语言通常将键值称为 关联数组_或_数据结构。键值通常也称为_字典_或_散列_。
键值存储示例
以下是键值存储的示例。
这些是简单的示例,但目的是提供键值数据库如何工作的概念。
电话簿
| 钥匙 | 价值 | | 鲍勃 | (123) 456-7890 | | 简 | (234) 567-8901 | | 塔拉 | (345) 678-9012 | | 头饰 | (456) 789-0123 |
艺术家信息
| 钥匙 | 价值 | | 艺术家:1:姓名 | 交流/直流 | | 艺术家:1:流派 | 硬石 | | 艺术家:2:姓名 | 纤细的尘土飞扬 | | 艺术家:2:流派 | 国家 |
股票交易
此示例使用列表作为值。
该列表包含股票代码,无论是“买入”还是“卖出”订单、股票数量和价格。
| 钥匙 | 价值 | | 123456789 | APPL, 买入, 100, 84.47 | | 234567890 | 欧洲核子研究中心, 出售, 50, 52.78 | | 345678901 | 爵士乐, 购买, 235, 145.06 | | 456789012 | AVGO, 买入, 300, 124.50 |
IP转发表
这是 IP 转发表的示例。它将 IP 地址转发到物理计算机的 MAC 地址。
| 钥匙 | 价值 | | 202.45.12.34 | 01:23:36:0f:a2:33 | | 202.45.123.4 | 00:25:33:da:4c:01 | | 245.12.33.45 | 02:03:33:10:e2:b1 | | 101.234.55.1 | b8:67:a3:11:23:b1 |
什么类型的数据可以存储在键值数据库中?
钥匙
键值对中的键必须(或至少_应该_)是唯一的。这是允许您访问与该键关联的值的唯一标识符。
理论上,关键可以是任何东西。但这可能取决于 DBMS。一个 DBMS 可能会施加限制,而另一个可能不会施加任何限制。
例如,在 Redis 中,允许的最大密钥大小为 512 MB。您可以使用任何二进制序列作为键,从短字符串到图像文件的内容。即使是空字符串也是有效的键。
但是,出于性能原因,您应该避免使用太长的密钥。但是太短也会导致可读性问题。在任何情况下,密钥都应遵循商定的约定,以保持一致。
价值
键值存储中的值可以是任何东西,例如文本(长或短)、数字、HTML 等标记代码、PHP 等编程代码、图像等。
该值也可以是一个列表,甚至是封装在对象中的另一个键值对。
一些密钥存储 DBMS 允许您为值指定数据类型。例如,您可以指定该值应为整数。其他 DBMS 不提供此功能,因此该值可以是任何类型。
例如,Redis DBMS 允许您指定以下数据类型:
- 二进制安全字符串。
- 列表:根据插入顺序排序的字符串元素的集合。
- 集合:唯一的、未排序的字符串元素的集合。
- 排序集,类似于 Sets,但其中每个字符串元素都与一个浮点数相关联,称为_score_。允许您执行诸如选择前 10 名或后 10 名等操作。
- 哈希,它是由与值关联的字段组成的映射。字段和值都是字符串。
- 位数组(或简单的位图)。
- HyperLogLogs:这是一种概率数据结构,用于估计集合的基数。
查看 Redis对 Redis 数据类型的介绍以获取更详细的说明。
键值数据库可以用来做什么?
键值数据库可以应用于很多场景。例如,键值存储可用于存储以下内容。
通用网络/计算机
- 用户资料
- 会话信息
- 文章/博客评论
- 电子邮件
- 状态消息
电子商务
- 购物车内容
- 产品类别
- 产品详情
- 产品评论
网络/数据维护
- 电信目录
- 互联网协议 (IP) 转发表
- 重复数据删除
键值数据库甚至可以存储整个网页,通过使用 URL 作为键和网页作为值。
但根据需要对数据执行的操作,其他 DB 模型可能更适合存储网页和文章。
键值数据库管理系统示例
以下是一些使用键值方法的DBMS 。