放弃数据库,改用Kafka!( 二 )


【放弃数据库,改用Kafka!】然而,通过在不可变且仅追加的日志中保留事件的历史顺序,Kafka 提供了重播这些事件的能力 。
鉴于业务的监管要求,必须以不可变的方式存储所有内容 。需要捕获并保留最初收到的所有数据 。虽然大多数数据库(包括SQL)都允许修改,但 Kafka 在设计上禁止对其不可变日志进行任何更改 。
使用 Kafka 作为记录系统并拥有无限存储意味着可以回到过去,分析事情是如何展开的,更改的解释,管理时间点历史更正并创建替代表示,而不会影响当前的操作工作负载 。
这种灵活性提供了显着的优势,尤其是在高度监管的市场中运营时,能及时有效地纠正错误,这一点至关重要 。
4、灵活性征服一切使用 Kafka 作为记录系统为的数据架构带来了显著的灵活性 。可以针对每个用例建立特定的视图,并使用与这些需求精确一致的专用数据库或技术,然后读取包含这些事件来源的 Kafka 主题 。
以客户数据管理为例 。可以使用专门为该用例设计的图数据库,而无需围绕图数据库构建整个系统,因为它只是基于 Kafka 的视图或投影 。
这种方法允许根据用例使用不同的数据库,而无需将它们指定为的记录系统 。相反,它们充当数据的表示,使能够保持灵活性 。否则,就将被插入数据库、数据湖或数据仓库,这些都是僵化的,不允许将数据转换为针对特定用例优化的表示形式 。
从初创公司的角度来看,这种灵活性也使能够避免过早地被锁定在某个特定的技术方向 。KOR成立于2021年,遵循将决策推迟到最后一个负责时刻的架构最佳实践,可以推迟对特定技术选择的承诺,直到它是必要的并且符合的要求 。这种方法意味着,可以随着业务需求的发展而调整和发展的技术环境,并实现未来的可扩展性和灵活性 。
除了灵活性之外,模式注册表(Schema Registry)的使用还确保了数据的一致性,因此开发者就可以知道数据的来源和与之相关的模式 。Confluence Cloud 还允许通过架构注册表设置明确的演进策略 。例如,如果将所有数据放入数据湖中,那么管理该数据的所有不同版本、不同模式和不同表示就会变得更加困难 。
5、切换技术的背后:事件驱动思维放弃数据库,而采用 Kafka 作为存储数据的记录系统,看起来是一件非常新鲜的做法 。
并不是所有公司上来就能接受这种做法,Andreas认为,这需要公司培育“事件驱动模型”的文化,并且这种思维转变还应该扩展到通过流处理开发应用程序的方式,不然就会引起兼容性不匹配的问题 。
这样做的目的,是帮助团队成员意识到:他们正在处理不可变的数据,如果他们编写了某些内容,他们就不能直接进去更改它 。
Andreas还建议道,要实现以Kafka为核心的架构,可以从理解“流处理和事件作为证明系统的重要性”的团队开始 。通过展示该团队内的优势,他们可以充当其他团队的大使,鼓励采用事件作为最终真相,并采用以状态作为最终表示的流处理 。
6、写在最后:Kafka可以取代数据库吗?早在2017年,Apache Kafka和Confluent的共同创始人Jay Kreps就明确表示过“ 可以在Apache Kafka中存储数据 ” 。
而且,数据可以在Kafka中想保存多久就保存多久 。《纽约时报》的Apache Kafka发布是用Kafka永远存储数据的著名例子 。Kafka被用来存储《纽约时报》曾经发布的所有文章,并取代了他们基于API的方式 。
那么Kafka可以取代数据库吗?显然并不现实,即便文中提到了许多传统数据库的“不合时宜”之处,比如,“数据库并不是为规模设计的”等观点,但也仅限于金融等强实时性场景中的方案 。
不过,倡导的打破传统数据库的思维定式去重新设计底层架构的方法,值得反思和借鉴 。
原文链接:https://thenewstack.io/ditching-databases-for-apache-kafka-as-system-of-record/




推荐阅读