貴社の特定のユースケースにはどのデータベース技術を使うべきでしょうか。
グローバルクラスターを構築する場合、アーキテクトは 2 つの選択肢から選ぶことになります。そしてどちらもAerospike データベース内で使用できます。
1.強力な一貫性、または同期クラスター技術:データはクラスター全体で常に一貫しています。ただし、同期クラスターは通常、非同期クラスターよりもずっと遅い速度で動作します。また、一部のデータが一時的に利用できなくなる場合があります。
2.高可用性、または非同期クラスターテクノロジー:データは常に利用可能ですが、古くて一貫性がなかったり、存在しなかったり、書き込みが失われる可能性があります。それでも、多くのユースケースに適しています。この技術は、精度は劣りますが、同期よりも高速であるため、よく選択されます。
ちょっと待って、質問させて!古いデータや間違ったデータを使ってもいいのですか?あるいは、書き込みが一部失われることもある? そんなことがあるんですか?
素晴らしい質問をありがとうございます。当然の質問なので、最初にお答えしましょう。
高可用性のユースケース
すべての高可用性のユースケースに共通するのは、迅速なユーザーエクスペリエンスを実現することに重点を置くことです。そのためには、アプリケーションのデータが古くなったり、不完全なデータを取得しても問題ありません。アプリケーションは依然として機能し、全体的に良好なビジネス結果をもたらします。
高可用性には多くのユースケースがあります。ここでは、レコメンデーション・エンジン、アドテック、不正検出の 3 つについて見ていきます。
レコメンデーションエンジン
お気に入りの e コマース サイトを入力すると、その ウェブサイトでは、あなたにおすすめする商品が表示されます。
別のショッピングサイトや映画サイトでアカウント情報を入力すると、そのサイトは、あなたが興味を持ちそうな商品や映画をすぐに表示してくれます。
まず、ウェブサイトはあなたを識別します。
次に、どの商品を買うべきか、どの映画を見るべきかといったおすすめを即座に提供してくれます。
ユーザーは世界中のどこにでもいる可能性があるため、ウェブサイトは、あなたのユーザープロフィールを非常に素早く読み取り、あなたが行動できるようなおすすめを素早く提供する必要があります。
そのためには、ローカルサーバー、つまり分散データベースシステムから読み取りを実行する必要があります。
たとえば、あなたは今家庭用品の ウェブサイトを閲覧しているとしましょう。
最近新しくPC用の椅子を購入しましたが、その書き込みが紛失してしまい、ユーザープロファイルに記録されませんでした。
何か大惨事が起きたのでしょうか?
これまでの購入から、ウェブサイトはあなたの好みの家具のスタイル (モダン)や、ホーム オフィスがあること、そしておそらく一軒家か広々としたアパートに住んでいること (大きな家具をいくつか購入したこと) を知っています。
書き込みを逃したからといって、あなたのプロフィールが劇的に変わるわけではありません。彼らはあなたに関する統計情報をまだたくさん持っていて、何をおすすめすべきかを知っています。
最悪の場合、おすすめされた商品を購入できなくなる可能性があります。
このセクションの結論として、高可用性のユースケースでは迅速なユーザー エクスペリエンスに重点が置かれていることがわかります。
データが古い場合や欠落している場合でも、ユーザーに優れたユーザーエクスペリエンスを提供することができます。
アドテック
ネットサーフィンをしていると、さまざまなページに広告が表示されます。多くの広告はユーザーに合わせてカスタマイズされており、ユーザーが最近検索したり調べたりした内容が表示されます。
アドテックへようこそ。ウェブサイトやページにアクセスすると、多くの場合、数秒以内に、自分に関連する広告が表示されます。これは文字通りリアルタイムで行われます。
舞台裏では何が起こっているのでしょうか?そしてそれは私たちの議論とどのように関係しているのでしょうか?
アドテック企業は、私たち一人ひとりの「ユーザープロフィール」を保管しています。
これらは、ハードウェアの MAC アドレス (インターネットに接続されている各ハードウェアの一意の識別子) を介して私たちを識別します。
アドテックは以前は Cookie だけに依存していましたが、Cookie の使用はさまざまな理由で崩れつつあります。その結果、ユーザーとその行動を推測するためにサードパーティのデータ ソースが使用されるようになりました。
ユーザーは匿名化されているため、アドテックではカテゴリを使用して各ユーザーを定義します。私たち一人ひとりには多くのカテゴリがあり、ネットサーフィンをしているうちに、私たちについて学習されていることがあります。
アレックスを例に考えてみましょう。
アドテックは、アレックスが男性、おそらく独身、エンジニア、35 ~ 49 歳、サンフランシスコのベイエリアに住んでおり、ガジェット、アクション映画が大好き、熱心な NBA ファン、そしてグリルが好きであることを知っています。
それは狭いプロフィールです。アドテックには、おそらく アレックスに関連するカテゴリが他にもたくさんあるでしょう。
アレックスは、今ウェブサイトに入っています。
舞台裏では、複数の アドテック企業が、アレックスがクリックしたばかりのページに広告を配信することを巡り競っています。プロセス全体にかかる時間は 100 ミリ秒と、まばたきよりも短い速さです。
- ユーザーを特定し、彼のユーザープロフィールを取得し、ユーザーに関連するキャンペーンがあるかどうかを確認します (これらはすべて 5 ~ 10 ミリ秒以内に行われます)。
- 入札を行う。
- 落札。
- アレックスの画面に広告を表示する。
スピードは非常に重要です。データベースは超高速である必要があります。
さらに、すべてのユーザープロファイルは世界中の多くの場所に保存されている必要があります。
これらは、世界中に分散している入札サーバーの近くにある必要があります。このようにして、読み取りはローカルで行われ、遅延が最小限に抑えられます。したがって、アドテックのデータベースは、多くの地域に分散されています。
どの広告が配信されているのか。
一般的なシナリオは、アドテック会社が アレックスのユーザープロフィールを見つけ、彼が最近どこでサーフィンをしていて、何に興味があるのか (おそらく新しいグリルを探している) を確認し、関連する広告をアレックスのプロフィールに配信するというものです。
しかし、別のシナリオも考えられます。サンフランシスコ近郊のデータベースが接続を失い、アドテック会社はアレックスについて何も知りません。彼らはまだ彼に広告を提供することができます – おそらくカリブ海へのクルーズや新しいSUVの広告です。これらの広告は関連性が低く、アレックスがクリックしない可能性がありますが、接続が失われたシナリオでも配信される可能性があります。
そのため、アドテックでは高可用性と速度が鍵となります。
非常に高速な読み取りが必要であり、データが完全に更新されていなかったり、一部が失われたり、データが存在しなくても問題ありません。
アドテック・システムでは、多くの読み取りが使用され、書き込みははるかに少なくなります。
ユーザープロファイルが アレックスの新しいデータで更新されると、書き込みが行われます (アレックスは何か新しいものを検索します)。
アドテック企業が入札に成功したら、その情報をネットワーク全体に伝える必要があるため、書き込みも行われます。
ただし、アレックスがロンドンから広告を配信したばかりであることをニューヨークが認識していなかったとしても、それは許容されます。システムはいずれ同期し、一部の書き込みが失われたとしても、比較的正確な広告が掲載されたことに変わりありません。
不正行為の検出
概念的なレベルでは、アドテックと非常によく似ています。
多くのユーザーがいて、それぞれがユーザーの過去の行動 (購入、金額、場所など) に関する大量のデータを含むプロファイルを持っています。
ユーザーは、商品の購入 (オンラインまたは対面)や、ローンの申請など、特定の取引を実行しようとします。
金融プロバイダー (PayPal、クレジット カード会社など) は、不正行為検出システムを運用しています。
そのシステムは、そのトランザクションが正当であるかどうかを瞬時に判断し、承認する必要があります。または、それが拒否されるべき不正取引であるかどうか。これは、オンラインでも対面でも、クレジット カードを使用するたびに発生します。
アドテックと同様に、不正検出システムは世界中に分散する必要があります。
私がボストン在住のユーザーの場合、Amazon (米国サーバー) や AliExpress (中国サーバー) から何かを購入したり、パリ (フランスサーバー) のホテルを予約したりするかもしれません。
また、出張や休暇で別の地域を旅行していることもあります。不正検出システムが迅速かつ瞬時のフィードバックを提供できるようにするには、読み取り遅延を最小限に抑えるために、ユーザー プロファイルを多くの地域に配置する必要があります。
前述したように、不正行為検出システムは、最寄りのデータベース サーバーからユーザープロファイルを読みにいきます。
もしそのデータが見つかった場合、そのユーザーデータに基づいて判断 (合法/不正トランザクション) が行われます。
しかし、何らかの理由で不正検出システムが必要なデータをすべて取得できない場合はどうなるでしょうか?
この場合、データがあれば何でも取得し、高度なアルゴリズムに基づいていくつかの仮定を立てます。
そのトランザクションが不正であるかどうかを判断するモデルには、ごく一部のデータで十分なのです。
このブログは2023/8/29「Database clustering: Use cases」の翻訳です。