通过Pinterest社引入NewSQL数据库,可以降低成本并改善数据一致性的方法

shutterstock_1131122102.png

Pinterest是一个美国的视觉发现引擎,可以发现食谱、家庭生活、风格等各种创意。截至2021年3月,全球月活跃用户超过4.78亿人。

近年来,我们公司一直使用HBase生态系统来提供关键的在线应用程序。但是这个基础架构非常复杂,功能也受限,并且维护成本和基础架构成本也很高。因此,我们正在寻找一种新的存储解决方案,它能够支持分布式事务和与SQL的兼容性。

在比较了YugaByteDB、CockroachDB和开源分布式数据库TiDB之后,我们选择了TiDB。这是因为TiDB符合我们公司在稳定性和性能方面的需求。通过使用TiDB,我们可以降低系统的复杂性、减少基础设施成本,并实现更严格的数据一致性。

Untitled.drawio (1).png

Pinterest在线存储的发展历程

2012年、Pinterestのテクノロジースタックに、シャーディングされたMySQLを導入しました。これを使用して、ピン、ボード、ユーザーを含むコアデータモデルを保存しました。

2013年、Pinterestの最初のNoSQLデータベースシステムとしてHBaseを導入しました。その後、HBaseは幅広く活用され、当社のクリティカルなサービスの多くを処理しています。当社は、HBaseをベースにしてカラム型データストア、グラフサービスその他多くのアプリケーションを構築しました。

2015年、高パフォーマンスのC++ベースストレージエンジンとしてRocksDBを導入しました。これにより、key-value (KV) storeと機械学習を処理するアプリケーションが強化されました。

2017年、さらなる機能(例えば分散トランザクション)をNoSQLデータベースに追加してほしい、という要望をユーザーから受けました。NoSQLユーザーはセカンダリインデックス作成機能を要望していました。ユーザーの要望を満たすため、ミドルレイヤーシステムを多数構築しました。

2021年、SQLとNoSQL間のスイートスポットを必要とするユースケースが再び多く発生しています。ユーザーはNoSQLのような拡張性を求める一方、SQLライクな機能も求めています。そこで、当社の次世代ストレージサービスのテクノロジーとして、分散型SQLデータベースが有望な選択肢ではないか、と考えるようになりました。

image.png

Pinterest 在线存储的演变

引入HBase

HBase的使用方式

2013年、PinterestにHBaseを導入しました。今日、当社は約50のクラスタを持ち、10PB以上のデータをホストし、1秒あたり1億以上のクエリを集計し、100種類以上のクリティカルなユースケースを処理しています。HBaseはその導入以来、Pinterestのインフラストラクチャの根幹になっています。今日でも、当社のクリティカルなオンラインパスとして機能しています。

我使用HBase构建了以下组件或在HBase上构建了以下组件。

    • HBaseとMemcacheを利用したグラフサービス

 

    • HBaseとMemcache上に構築されたワイドカラム型データストア

 

    • HBaseとApache Omidをベースとした、ミドルウェアレイヤーとしての分散トランザクションデータベース

 

    インデックス付けされたデータストア。HBaseアプリケーションとMuse(インハウスの検索エンジン)のほぼリアルタイムのインデックス作成を実現

这个图展示了HBase生态系统架构的概览。

image.png

HBase生态系统在Pinterest中的应用

我将在下面解释这个生态系统。

    • 中心にあるのがHBaseです。

 

    • HBaseの上にグラフデータベース、カラム型データストア、トランザクションマネージャー、セカンダリインデックス作成機能があります。

 

    図の右側には、変更データキャプチャ(CDC)パイプラインがあります。ここにカスタマイズ済みのHBaseレプリケーションプロキシが構築されています。このプロキシは、HBaseからみたらログを右側に渡している、今度はそれをKafkaにストリーミングします。次いで、ダウンストリームの消費システムであるArgusがそのログを消費します。通知は、他のサービスにフィードバックしています。

HBase的问题 (HBase de

HBase多年来对我们非常有帮助。然而,出现了以下一些问题。

メンテナンスコストが高い
この8年間、使用していたHBaseのバージョンが古かったこともあり、長期にわたる技術的負債に悩まされてきました。HBaseは複雑なシステムであり、参入障壁も高く、その結果、HBaseを稼働させるのに多くの労力が必要でした。これが主要な問題点の1つでした。

機能の制限
HBaseは高性能ですが、そのインターフェースは単純です。ユーザーは最初、HBaseの単純なKVインターフェースを気に入りましたが、整合性の強化など、さらに充実した機能を求めるようになりました。これらの要請をすべて満足させることのできるミドルレイヤーシステムを、NoSQLデータストア上に構築するのは困難です。

複雑さ
ユーザーの要求を満たし続ける必要があったため、これらのいわば「レゴブロック」を時間をかけて積み上げ、SQLライクな機能をNoSQLデータストアでサポートしてきました。言うまでもなく、HBase自体には、ZooKeeperやHadoop分散ファイルシステム(HDFS)のようなさまざまなコンポーネントや付随サービスがありました。

インフラストラクチャコストが高い
高可用性を実現するためにプライマリスタンバイクラスタのペアを利用していたことから、インフラストラクチャコストが高額でした。また、1つのデータセットに6つのレプリカを使っていました。

HBase系统的主要问题(针对用户)

对于用户来说,现有的HBase系统存在问题。

禅宗的问题

Zen是一种提供内部图形服务的图形数据模型。基本上,用户可以使用节点和边的数据模型执行CRUD操作。用户可以定义独特的索引、非独特的索引、边查询索引、本地索引等自定义索引。

Zen存在着以下两个主要问题。

    • データの不整合

 

    • HBaseは複数のテーブルをまたがったトランザクションや複数の行にまたがったトランザクションに対応していなかったため、不整合なデータが原因で多くの問題が生じました。ユーザーは混乱しました。彼らはデータの整合性を確保するためにさらにコーディングを行わなければなりませんでした。

 

    • クエリサポートの制限

 

    HBaseの機能は限られていたため、結合のような複雑なクエリを実行するのが困難でした。

Ixia的问题所在

Ixia是一种内部索引数据存储系统,它是基于HBase和Muse(内部索引引擎)构建的。我们使用CDC进行异步索引创建。可靠的唯一数据源被写入HBase。我们通过异步方式构建每个索引以供搜索引擎使用。

Ixia的主要问题如下所示。

    • インデックス障害やインデックスの不整合が発生するときがある。不整合に関する問題をデバッグするため、フラストレーションが溜まったユーザーと共に多くの時間を費やしました。

 

    システムが複雑なため、問題診断に時間がかかる場合がある。

因此,我們正在尋找一個能夠在這種情況下順利應對的新的儲存解決方案。

探索新的儲存空間

目前,我们的存储解决方案与理想有差距,缺少以下要素。

    • 分散トランザクションのような機能。この機能があれば、必要に応じて厳密な整合性や優れたパフォーマンスを実現できます。このことは、オンラインアプリケーションにとって非常に重要です。

 

    SQLとの互換性。これにより、表現力豊かなクエリを実行し、シームレスなエクスペリエンスをユーザーに提供できます。

我脑海中想到的是类似于Google Spanner的东西。因此,我决定探索开源的分布式SQL系统。

探索分散式SQL

我们对15种技术进行了评估,包括内部系统、开源技术和云解决方案等。

在考虑到操作负担、迁移成本、编程语言、社区支持和成本效益等各种因素时,我们特别关注了开源的分布式SQL系统。在调查的最后阶段,我们将候选方案缩小为YugaByteDB、CockroachDB和TiDB这三种。最终我们选择了TiDB,因为它最符合我们公司关于稳定性和性能的要求。

TiDB是什么?

TiDB是一个开源的分布式SQL数据库,适用于混合事务分析处理(HTAP)工作负载。它与MySQL兼容,并具有水平扩展性、严格的一致性和优秀的可用性。有关TiDB体系结构的详细信息,请点击此处。

使用TiDB进行评估 TiDB

我们使用Pinterest的实际运营流量进行了黑暗流量的评估。我们使用Ixia作为目标系统。它是一个几乎实时创建索引的系统,并存储在HBase上,如下图所示。

image.png

上图的说明

    • 左側にあるのがIxiaのアーキテクチャです。ご覧のとおり非常に複雑です。HBaseとCDCパイプラインがあります。IxiaとThriftサーバーがあります。また、Memcacheと検索エンジンが使用されています。

 

    • 右側にあるのがTiDB上に構築されたダークトラフィックアプリケーションです。

 

    TiDBのアーキテクチャはIxiaよりもずっとシンプルです。

以下是TiDB带来的好处。

    • システムの複雑性の低下、整合性の向上。これはTiDBが分散トランザクションに対応しているためです。

 

    • インフラストラクチャコストの軽減。これはコンポーネント数が減少したためです。

 

    同等のパフォーマンス(場合によってはさらに優れたパフォーマンスも)— 同一タイプのクエリの場合です。

この結果は、当社のユースケースのうちの1つに過ぎません。他のユースケースについても評価を行いましたが、総じてTiDBのパフォーマンスと信頼性は満足のいくものでした。

TiDB的挑战与机遇

在持续合作中,我们正在考虑关于新的挑战以及如何让TiDB对像Pinterest这样的公司更有益且更强大的方式和情境。以下是一些例子。

    • TiDBは、コミュニティで高い人気を博しており、今なお進化し続けています。当社は、TiDBがこれから製品としてさらに成熟し、機能を増やしていくことを期待しています。

 

    • また、クォーラムが失われた場合に、オンラインリカバリが実行される機能を期待しています。

 

    • Pinterestは米国外にも事業を展開する予定です。当社にとってのもう1つの重大な関心事はマルチリージョンデプロイメントです。

 

    • また、数百テラバイト規模の大規模データを高速で取り込める優れたソリューションを期待しています。

 

    HBaseに非常に大きなエコシステムがあるため、HBaseからTiDBにダウンタイムゼロで移行できる方法をいまだ模索中です。

如果您想要了解更多关于如何充分利用TiDB的信息,或者有任何问题的话,请加入我们的Slack TiDB社区。如果您对TiDB产生了兴趣,您可以在这里开始使用。

本文是根据Lianghong Xu在PingCAP DevCon 2021上的演讲创作而成的。

关于此事项的查询联系处
PingCAP株式会社公关部
邮箱:pingcapjp@pingcap.com

广告
将在 10 秒后关闭
bannerAds