koushr 2020-06-04
关系数据库仍然是世界上使用最广泛的数据库类别,但多年来其人气趋势线一直平平。同时,其他云原生数据库系统类型却日益崛起。这在各种版本的NoSQL数据库系统中尤为明显,比如文档存储数据库(MongoDB)、键值数据库(Redis)和宽列数据库(Cassandra)。
来自DB-Engines的下图清楚地表明了这个趋势:
NoSQL数据库系统如此迅猛增长的部分原因在于它们与人工智能(AI)和机器学习(ML)等所谓的“大数据”兼容。由于NoSQL数据库的结构性不如关系数据库,所以它们更灵活,可以更好地扩展——对于需要由AI和ML系统常常实时处理的大量数据而言这是两个重要的属性。
为了更好地了解为什么NoSQL现在如此流行、这些系统如何处理AI和ML,我与最流行的NoSQL数据库公司之一Redis Labs的创始人进行了交谈。Yiftach Shoolman自2011年以来一直担任该公司的CTO,最近带领手下发布了Redis Labs的新模块RedisAI。
Shoolman告诉我:“我认为,今天人们以更开放的心态看待新的数据模型。”他说,企业关注关系数据库的替代技术主要出于两个动机。第一个是可扩展性,第二个是关系数据库不直接支持应用程序所需的数据模型时。后者的一个例子是电子商务网站上的实时推荐,这需要能够将大量不同数据快速连接在一起的数据库(这方面的一个选择是Graph DBMS产品,比如Neo4j)。
Redis是一种键值数据库系统,这意味着它存储键值对,但与Neo4j一样,它也针对实时Web进行了优化。实际上,它是为实时Web发明的。Salvatore Sanfilippo早在2009年开始开发Redis时,那是由于他当时在开发一个实时分析引擎,但是借助关系数据库很难扩展。于是,他做了任何聪明的开发人员都会做的事情:自行构建解决方案。这就变成了开源Redis,现在它是全球人气指数排名第八的数据库(键值数据库中人气最高)。
Redis有内存数据结构,这意味着它使用随机存取存储器(RAM)存储数据。这使其比传统数据库快得多,还非常适合用作缓存系统。这就是Redis有别于关系数据库及NoSQL竞争对手(比如MongoDB和Cassandra)的地方。据Shoolman声称,由于内存结构,Redis“对实时应用进行了非常优化的设计,延迟时间不到1毫秒。”
内存结构的缺点之一是,它根本没有与其他数据库系统同样的容量,对于AI而言更是如此。鉴于AI可处理你馈送给它的大量数据,这可能是个大问题。查询数据也不是一样容易,查询数据是Oracle和MySQL等关系数据库以及CockroachDB等新兴的云原生SQL数据库的优势。
虽然Shoolman承认Redis“在许多情况下仍被用作缓存系统”,但他说Redis Labs公司的目标是帮助企业“将其更多地用作缓存”。该公司主要通过Redis Enterprise来做到这一点,这是基于开源Redis数据库而建的商业平台。
Redis Labs通过模块将Redis的核心功能扩展为一个完整的“数据库平台”,RedisAI是其中一种模块。RedisAI是Redis Labs与AI软件专家Tenserwerk共同开发的,让您能够跨Redis数据库运行AI推理引擎。
Shoolman透露的一个关键点是,RedisAI模块不会训练您的数据——为此您需要TensorFlow或PyTorch之类的工具(这是两个用于机器学习的开源平台)。RedisAI出现在应用程序层,是时候将逻辑运用于数据(推理)、然后将数据提供给用户了。
Shoolman解释说:“我们认为您需要在云端某个地方训练[AI]模型。一旦您要进行服务或推理,Redis是适合执行该操作的数据库。”
Shoolman以信用卡交易的交易评分为例。最终,系统必须决定交易是成功还是失败。 Shoolman说:“为了做到这一点,您需要添加用户资料、商家资料、教育资料和有效的交易数据本身,然后对所有内容进行向量化处理,并发送给AI。”
RedisAI是AI软件和数据之间的一种渠道。而速度最关键,至少对Redis而言是如此。 当然,准确性部分也很关键,但这大概是AI训练平台的责任。
据Shoolman声称,企业前进道路上的主要挑战之一是它们是想坚持使用关系数据库的传统孤立方法,还是想采用依托一个后端支持多个数据模型的多模型方法。Redis Enterprise是后者的一个例子,它的每个模块都支持不同的数据模型。
Shoolman说,这取决于您想要实现的目标。与多模型方法相比,有些事情是关系数据库根本做不到的。