讨论数据存储技术 – 天河

讨论数据存储技术——银河系的翻译。

2022年11月22日

讨论数据存储技术 – 天河

流媒体、批处理、缓存、存档、加密-数据管理可能看起来非常复杂。我们可以用冰淇淋店来做类比来解释这些选项。

缓存和牛奶有什么共同点?都是旧了就无用了。无论您是一个数据工程师,还是一个在应用程序方面有重点的人,在设计企业数据架构时,了解数据查询技巧都是很重要的。在这篇轻松的博客中,我们会通过比较冰淇淋店的故事,来比较牛奶的消耗方式和数据的传递方式,并帮助您在架构中做出数据选择(这是一个双关语)的决策。

这是一个冰淇淋店的故事。有使用新鲜牛奶做成的软冰淇淋,普通的冰冻冰淇淋,还有使用牦牛奶制作的特色冰淇淋。冰淇淋的质量取决于使用的牛奶质量。在这里,我们将介绍根据冰淇淋种类选择牛奶以及选择数据的方法。

对新鲜牛奶(或新鲜数据)的需求与重要性

軟冰淇淋是我們店裡的熱賣商品。軟冰淇淋的口味非常好,但要使用新鮮的牛奶需要成本。

可能需要像新鲜牛奶一样,需要新鲜的数据。如果始终直接查询数据库,不使用缓存,可能会在成本和延迟方面显得更昂贵。

可能存在着节约查询成本的数据库内部缓存。然而,数据库的内部缓存比较通用,无法根据应用程序进行自定义。例如,在PostgreSQL®中,内部缓存的缓冲区大小是通过shared_buffer配置来设置的。如果为shared_buffer分配了大量内存,则会减少可用于其他计算处理的总内存。

对于粉状奶(或缓存数据)

虽然我们店里最畅销的是软冰淇淋,但普通的冰淇淋更实惠,所以人们也会选择购买它。普通的冰淇淋制作时使用奶粉,因此可以降低成本。奶粉本身就很便宜,并且我们可以储备充足,这样就减少了往返奶牛场的次数。

在这个比喻中,粉状奶精就像被缓存的数据一样,可以节省与数据库的往返,但由于粉状奶精有保质期限,所以可能不是最新的。过时的缓存数据不能用于商业决策。缓存的失效是计算机科学中第二难的问题,这一点是众所周知的。

即使我们可以储备粉奶,但为了维持健康的储备,我们偶尔还是需要外出。同样地,我们需要找到更新现金的好方法。为了优先考虑成本、延迟和性能,有各种不同的缓存技术,如缓存旁路、写透、写后等等。然而,每种选择都存在权衡,没有特效药可用。难道没有依赖缓存技术并始终消耗新鲜数据的解决方案吗?

如果是牛奶管道(或者流媒体数据)的情况下

冰淇淋店已经获得了大量的新客户,无法满足软冰淇淋制作所需的新鲜牛奶的需求。众所周知,新鲜牛奶是主要原料,但如何避免去乳牛场呢?一种方法是备好大量的牛奶库存。这需要很高的成本,并且存在牛奶过期的风险。另一种方法是持续供应新鲜牛奶。例如,可以请乳制品公司在店铺引入牛奶管道供应。牛奶会被加压并快速配送。为了制作美味的软冰淇淋,需要对牛奶进行恢复原状的处理。

这类似于批处理和流处理的选择。在批处理中,数据在指定的时间收集,数据通常是大文件的形式。另一方面,流处理则意味着持续地传输更少量的数据,以实时进行数据处理。

可能的一种翻译是:
在地理上相距较远的地区,分散系统的目的可能是将数据从源事务系统移动到世界各地的多个目标数据存储库。例如,要将数据从关系型数据库(例如PostgreSQL®)移动到键值存储库(例如Redis®*),可以使用Debezium的PostgreSQL源连接器将数据发送到Apache Kafka®,然后使用Redis接收器连接器将数据导入到Redis。这种方法的优点是可以不给源系统带来负担,并且可以不断增加接收器。

以下的图表展示了一个以Apache Kafka为中心的非连接系统布局示例。

PostgreSQLのソースデータがAiven for Apache Kafkaサービスに入り、そこからAWS S3、Aiven for Redis、Google Cloud Storageのシンクに送られる図

为了长期保存,将牛奶(数据)冷冻。

如果需要长期保存,冷冻牛奶是最佳选择。此外,在炎热季节需求增加的情况下,也能保证供应牛奶。同样地,可以通过将归档数据长期保存在Kafka或将其同步到AWS S3来利用更为经济实惠的存储选项。例如,出于合规性的原因,可能需要将一定年限的数据进行归档。

管理特殊牛奶(机密数据)

冰淇淋店销售使用牦牛的牛奶制作的独特冰淇淋。这种牛奶在农场不可用,冰淇淋店也没有储备。需要牦牛奶时,我们随时在当地采购,并对运输非常小心,以确保不浪费。

同样,敏感数据(如API令牌)不应存储在缓存中,也不应以明文方式进行数据流处理。这类数据应在需要时生成、加密,并作为加密数据进行传输和使用。例如,在Apache Kafka中,源连接器可以在生成消息后、写入Kafka之前,将单个消息转换为SMT(单个消息转换)应用于入站消息。关于这个主题,请查看我的同事Francesco Tisiot的一次优秀的演讲。此外,您还可以使用Apache Flink®在实时中过滤或转换敏感数据。

成本与性能之间的权衡

最初阶段,如果数据量较少且使用简单的用例,像PostgreSQL这样的关系型数据库已经足够。担心缓存和流媒体解决方案可能会显得有些过度。保持架构简单是重要的,但考虑未来的扩展需求也是必不可少的。随着数据量和系统复杂性的增加,多个系统之间的交互会增加工程师的工作量和成本。此外,在消费数据之前可能还需要进行数据转换。让我们介绍三个应遵循的决定成本和性能权衡的规则。

    • ソフトウェア・ソリューションの実際のコストには、現在の実装コストと、将来のメンテナンスおよび近代化コストが含まれます。成熟したシステムの修正コストは高く、しばしば不可能である。

 

    • オープンソースのソリューションは、プロプライエタリなソリューションに比べて、より多くの制御、可視性、および移行の容易さを提供します。

 

    ストレージやネットワーキング層にボトルネックがあるアプリケーションに、最高のパフォーマンスを期待することはできない。

总结

冰淇淋店充分备有不同的要求。如果要使您的冰淇淋(应用程序)具有最佳品质,应使用高品质的牛奶(数据)以及适当的牛奶保存和传递技术(数据库/流媒体)。如果想提供像冰淇淋一样的数据相关服务,并且希望使用稳健且开源的数据平台,建议尝试使用Aiven。

广告
将在 10 秒后关闭
bannerAds