1,000億のテキスト情報、高い同時MD5クエリ、このような大量のデータビジネスを取得する方法は?

==プラネットウォーターフレンズからの質問==
こんにちは、シェンさん、IDカード情報の取得について質問したいと思います。

同社は、IDカードMD5に基づいてIDカード情報をクエリする(想定)1秒あたり50,000の同時クエリのビジネスを持っています。現在、プレーンテキストで保存されているデータは1,000億個あります。数日前に、LevelDBを作成しましたが、このビジネスはLevelDBメモリを使用できますか?データベースは保存されていますか?他に最適化ソリューションはありますか?
Voiceover:LevelDB「メモリKVキャッシュ/データベース」。
==問題の説明の終わり==

最後の惑星水族館は約36億のログバックグラウンドページングクエリを要求し、続いて1,000億のテキストMD5クエリを要求しました。今回は、少なくともビジネスを解決する必要があります:
(1)クエリの問題;
(2)高性能の問題;
(3)ストレージの問題;

1.お問い合わせ

テキスト情報の検索と取得は非常に非効率的です。解決すべき最初の問題は、テキストフィルタリングを構造化クエリに変換することです。

検索条件はMD5であるため、次のように構成できます。
(MD5、データ)
これは、KVクエリ、またはデータベース内のインデックスクエリです。

MD5は一般に文字列表現であり、インデックスとしての文字列のパフォーマンスが低下することに注意してください。インデックス作成の効率を向上させるために、ストレージ用に文字列MD5を2つのuint64_tに変換できます。

(md5_high、md5_low、data)
2つの長い整数が、KVのジョイントインデックスまたはジョイントキーとして使用されます。

このビジネスには、単一行のデータのプライマリキーに対するクエリという強力な機能があります。データの量に関係なく、キャッシュが使用されていない場合でも、従来のリレーショナルデータベースストレージは、単一のマシンで少なくとも1Wのクエリを実行できます。
Voiceover:しかし、実際には、スタンドアロンデバイスに保存することはできません。後で詳しく説明します。

2.高性能の問題

同時実行性は毎秒5Wで、スループットは非常に大きいです。次に解決する必要があるのは、パフォーマンスの向上です。

IDカード照会事業には2つの大きな特徴があります。

(1)照会されるデータは固定されています。

(2)クエリ要求のみで、変更要求はありません。

キャッシュはこのシナリオに非常に適していると考えるのは簡単です。それだけでなく、キャッシュの「ウォームアップ」を回避するために事前にデータをメモリにロードすることもできます。
Voiceover:ビジネス特性に基づいた設計。廃業しているアーキテクチャ設計はすべて不正です。

メモリが十分に大きく、データが事前にロードされている場合、キャッシュヒット率は100%になる可能性があります。事前にロードされていなくても、各データのキャッシュミスは最大で1つです。データがキャッシュに入ると、書き込み要求がないため、スワップアウトされることはありません。 。

十分なメモリの前提は成り立ちますか?

各IDカードの情報を0.5Kとすると、1,000億は約
1,000億* 0.5K = 50000G = 50T
ボイスオーバー:正しいですか?

この観点から、それがあまりローカルな専制君主でない場合、キャッシュはすべてのデータを保持することはできず、ホットデータのみを運ぶことができます。

5Wのスループットはボトルネックですか?

容量を直線的に拡張する方法はたくさんあります。
(1)10を超える冗長サイトとサービス、
(2)ストレージ(プライマリキーの単一行クエリ)を水平方向に10以上に分割し
、5Wの同時実行性は問題ではないことがわかります。

3、ストレージの問題

前の部分で分析したように、1,000億のIDカード情報、50Tデータ、データ量が本当に多すぎる、従来のリレーショナルデータベース、LevelDBなどのシングルマシンメモリデータベースは特に適していません、手動の水平セグメンテーション、分割インスタンスは非常に多くなりますメンテナンスが難しい。

または、大量のデータに適したHbaseストレージテクノロジーを使用します。

最後に、この例と組み合わされ、それが推奨される:
(1)決してテキスト検索は、構造化されなければならない;
(2)シングルラインクエリは、読み取り専用および非書き込み、キャッシュ+冗長+水平分割を大幅向上させることができる能力、
(3) )大規模なデータストレージに適したテクノロジーを使用します。

経験は限られており、誰もがより多くのより良いソリューションを提供することを歓迎します。
結論よりもアイデアの方が重要です。
1,000億のテキスト情報、高い同時MD5クエリ、このような大量のデータビジネスを取得する方法は?
どなたでも質問を続け、すべての質問に答えることができます。

ゴルファーからの質問に答える:

「MQはどのようにしてスムーズな移行を実現しますか?
「30億ログ、検索+ページング+背景表示」

放課後の練習:

1,000億のデータ、異なるID番号はMD5の重複を引き起こす可能性があります、どうすればよいですか?

おすすめ

転載: blog.51cto.com/jyjstack/2548557