acm-header
登录

ACM通信

BLOG@CACM

理解NoSQL数据库类型:关键值


键值存储的工作方式与传统的关系模式非常不同,它将数据组织成集合而不是表。由于已经有很多关于这个主题的详细文章,本文打算提供一个非常简短的介绍;我着重介绍了了解这种数据库类型所需的基本方面。

NoSQL数据库的广泛“保护伞”继续为当今一些最受欢迎的服务和平台提供动力。内容以光速传递——NoSQL可能也更适合于新兴的协同分散的财政系统。

在所有的非关系存储中,键值存储由于其极端的简单性是迄今为止最受欢迎的。如果你想回顾一些非关系的其他模式和方面,这里是我之前发表的相关文章CACM

概述:键值数据库

键值存储/数据库软件程序使用一组惟一标识符来存储数据。每一对标识符都有一个相关联的值,我们称之为“键-值对”。唯一标识符充当表示数据项的“键”,具有项的位置或数据本身的赋值(例如。键值:CITY,值:LONDON)。

键的性质是灵活的,也取决于所选软件允许的内容,但它必须足够独特,以便查询可以显示特定的键/值。值本身是不受限制的,可以是一个列表或另一个键-值对(这种设计理念实际上在大多数编程系统中使用,作为映射对象或数组—在本例中,仅用于DBS中的持久存储)。

这个数据建模系统非常流行,因为它可以将信息放入未定义的glob中,而不需要超级离散的数据(这在关系模型中是不可避免的,因为它们的预设表格结构是基于行和列的)。这意味着没有真正的需要索引,因为结构是自然轻的脚执行。这里也没有真正的母语;大多数查询依赖于简单的put、get和delete命令。

这种简单性和可伸缩性的明显代价是,从查询生成的数据没有经过过滤。2020年疫情后,如今的家庭为了更好地实现工作与生活的平衡而选择远程工作,因此更需要有关系的人和非关系的人共同成长。有些用例如果没有对数据的严格控制就不可能实现,但在另一些用例中,键值存储的速度和可靠性弥补了这些缺陷。程序员通常可以专门解决NoSQL的控制/过滤器问题——DevOps可能也应该更多地采用这种哲学对于SQL也是如此;根据情景需要利用元素,而不是在SQL/NoSQL之间跨越黑白分明的壕沟。

在传统的关系设计中,数据是使用行和列的表格结构存储的。需要预先存储许多属性(以及在整个数据库中继承具有新属性的每个字段),这增加了它进行高完整性、垂直优化的能力。这种优化包括与数据访问和聚合相关的压缩和性能增强。也就是说,尽管无纸化个人会计应用非常出色,但这种功能带来了某种限制性的不灵活性。

相比之下,传统的键值存储自然具有更大的灵活性,可以执行非常快的读写,部分原因是数据库只需要搜索单个键,然后返回相关值,而不需要进行复杂的聚合。

为什么使用键值存储?

这是一种非常流行的NoSQL形式,因为当你的数据库使用它时,它有很多好处:

可伸缩性-与NoSQL一般一样,您可以获得非凡的水平可伸缩性。在垂直扩展的可靠性有限的情况下(甚至关系在垂直方向的可伸缩性也有限),键-值存储为您提供了创建具有各种结构状态的复杂数据的超大数据库的强大能力,从而弥补了这一点。这可以通过分区和复制实现,而ACID保证可以最小化。

查询-这要简单得多,或者完全不用。查询只在需要查询键的实例中使用,有时甚至这也不总是可能的。因此,在处理购物车、用户配置文件和会话等事情时,它的成本更低——因为您只需要执行一个读取请求和另一个写入请求(由于键值存储的gloglolike性质)。并发性问题也更容易管理,因为只需要解决一个键。

迁移-没有结构化查询语言带来的另一个好处是,基于键值存储设计的数据具有很高的移动性。您可以将其转移到另一个数据系统,而不需要更改代码或引入新的体系结构。例如,迁移到一个新的操作系统不会产生关系数据库所期望的那种大规模破坏。

键值存储的流行用例

键-值数据库的简单性和水平可伸缩性使其适合于许多高价值的用例:

  • Web应用程序——今天,Web应用程序需要存储大量关于用户会话和偏好的数据。键值存储可以实现快速读写,通过简单的用户键可以快速访问不同的信息(并将其引入数据库)。最近的美国反垄断法案可能增加市场上应用程序的多样性。

  • 个性化——对上面的扩展:键-值存储允许一组独特的数据块,可以实时集成这些数据块,用于推荐和广告。这些商店可以在访问者访问网站的过程中立即访问并加载新的广告或推荐。

  • 内存缓存——键值存储通常用于提高应用程序的速度,使检索更快。虽然传统的关系不适合强烈的读/写请求,但键-值是一个自然的适合。这使得它最适合实时处理大量同时用户的应用程序。冗余保护措施使它能够很好地管理数据丢失,并作为不定期更新的数据的数据缓存。

键值商店总体上非常适合管理用户帐户、大量用户会话(来自MMO游戏)比地球表面积还大电子商务和产品推荐、定制广告交付(针对每个用户定制),以及需要可扩展性的一般大数据情况。

键值商店的一个鲜为人知但主要用途是用于平台上的一次性、临时或季节性消费趋势。例如,国家法定假日、圣诞节、黑色星期五等等。key-value的简单性和性能使供应商能够购买临时碎片,专门帮助在这些季节性繁忙期间进行处理,而不是将一个昂贵的基础设施投入全年都是实时的。

结论

每个数据库都在权衡利弊。虽然SQL可能在安全方面有优势,但使用RDBMs(如MySQL)的网站和应用程序仍然面临严重的漏洞。例如,SQL注入是web应用程序的第二大威胁向量在上升大约从2018年开始。

键-值存储的真正优点是使事情简单化。一方面,这对我们的管道可能是一个严重的限制——例如在对垂直要求最高的用例中,如财务事务,它需要记录和查询的坚固级别的系统可靠性。另一方面,它设法克服了关系数据库中发现的几个主要弱点(一些体系结构最适合磁盘,另一些则适合Memached内存中)。

通过使用这两个系统,我们可以最大限度地提高我们的运营效率——无论是管理用户、数据分析,还是在不增加复杂性和成本的情况下快速扩展。

亚历克斯·威廉姆斯是一个拥有超过15年经验的全栈开发人员,并且拥有托管英国数据中心


没有找到条目

登录全面访问
忘记密码? »创建ACM Web帐号
Baidu
map