什么是键值数据库?

发布于

键值数据库(也称为键值存储和键值存储数据库)是一种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 。