Kafka能作为数据库使用吗

更好阅读体验请扫码关注公众号:浮世Talk

导读

Apache Kafka可以而且应该取代数据库吗?如果是,那么能够在Kafka中存储多长时间的数据?如何在Kafka中查询和处理数据?越来越多诸如此类的问题,你可能很难找到恰当的解释,那么你可以试着从该文章中寻找答案。

Apache Kafka和Confluent的联合创始人Jay Kreps在2017年就已经解释了为什么 "在Apache Kafka中存储数据是可以的",然而,时光匆匆过去了三年,很多东西都有了改进,并增加了新的组件和功能。这篇文章从数据库的角度出发,一直谈到Kafka的核心概念,解释了数据库背后的思想和不同的功能,如存储、查询和事务,探讨了Kafka和其他数据库之间的关系和衡量标准,希望你可以从阅读中有所收获。

什么是数据库

让我们从一个很高的层面来思考 数据库这个词,根据维基百科的说法:

数据库,又称为数据管理系统,简而言之可视为电子化的文件存储器,用户可以对文件中的数据运行新增、截取、更新、删除等操作。

数据库管理系统(DBMS)是与最终用户、应用程序和数据库本身进行交互的软件,用于采集和分析数据,DBMS软件还包括为管理数据库提供的核心设施。数据库、DBMS和相关的应用程序的总和可以称为 "数据库系统",通常情况下,"数据库 "一词也被用来松散地指代DBMS、数据库系统或与数据库相关的应用程序中的任何一个。

计算机科学家可以根据数据库管理系统支持的数据库模型对数据库管理系统进行分类。关系型数据库在20世纪80年代成为主流,这些数据库将数据建模为一系列表中的行和列,绝大多数使用SQL来编写和查询数据。到了2000年代,非关系型数据库开始流行,由于使用不同的查询语言,因此被称为NoSQL。

根据这个定义,我们知道,市场上有很多数据库,如:甲骨文(Oracle)、MySQL、Postgres、Hbase、MongoDB、InfluxDB等等。

数据库选型

数据库基础设施用于数据的存储、查询和处理,通常有特定的交付和持久性保证(又称为事务)。

从市场上所有的NoSQL和大数据产品中,我们都应该知道,并不是只有一个数据库。对于每个用例,通常是根据业务的特点选择合适的数据库:要存储多长时间的数据、数据应该有什么样的结构、你需要复杂的查询或者是仅仅通过键和值来检索数据,此外还要考虑是否需要ACID事务、精确的一次性语义等等。

例如:在你进行架构选型时就要考虑是否需要像MySQL或Postgres这样的关系型数据库、像Hbase这样的大数据批处理平台、像MongoDB这样的文档存储、像RocksDB这样的键值存储、像InfluxDB这样的时间序列数据库、像Memcached这样的内存内缓存……这些问题以及更多的问题都必须要回答。

每个数据库都有不同的特点,因此,当你问自己是否可以用Kafka来代替数据库时,你要做的是先弄清楚你的业务需求是什么,你需要用哪种数据库。

此外,你还需要对kafka进行调研,了解kafka特性,评估它能否取代的数据库。那么kafka是什么呢?

什么是Apache Kafka

先看官方是如何定义kafka的:

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。

我们进行详细的分析。

Kafka是一个事件流平台

首先,Kafka不只是一个单纯的Pub/sub消息系统,它是一个事件流媒体平台,集高度解耦、可扩展性强、高可用、分布式流式处理于一身,使得它成为大数据领域和微服务领域的标配。因此,可以用以下四点对kafka进行概括:的主要原因之一是它结合了四个强大的概念:

  1. 发布和订阅事件流,类似于消息队列或企业消息系统;

  2. 容错性的数据存储系统,只要你愿意(数小时、数天、数月、永久);

  3. 实时事件流处理;

  4. 支持集成丰富的数据源和数据存储介质(无论实时、批处理还是请求响应)。

     

 

通过以上的分析,我们可以得出结论:存储是Kafka的主要原则之一,因此,根据你的需求和定义,Kafka是可以作为数据库来使用的。

Kafka Core 是一个有ACID保证的数据库吗

关于 "Kafka Core"(指的是Kafka brokers 及其分布式提交日志、复制、分区、保证排序等概念)如何与数据库的ACID(Atomicity、Consistency、Isolistency、Isolation、Durability)事务属性相匹配的讨论,我就不一一列举了。Martin Kleppmann在2018年旧金山Kafka峰会("Is Kafka是数据库吗?")

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值