Azure テーブル/Blob/SQL ストレージの比較をたくさん読んで、それらすべてを十分に理解していると思います。おそらく、同様のシナリオの経験があり、推奨を行うことができる人です。
私が持っているもの
記事を varchar(max) 列内の生の HTML に格納する SQL Azure DB。各行には、簡単にクエリを実行できるように、多くのメタデータ列と多くのインデックスもあります。このテーブルには、ユーザー、サブスクリプション、タグなどへの参照が多数含まれているため、私のプロジェクトでは常に SQL DB が必要になります。
どうしたの
このテーブルにはすでに約 500,000 の記事があり、年間数百万の記事が増えると予想しています。各記事の HTML コンテンツは、数 KB から 1 MB の範囲で、ごくまれに 1 MB を超えることがあります。
2 つの問題が発生します。Azure SQL ストレージは高価であるため、これを格納するためのコストを考えると、遅かれ早かれ頭を悩ませることになります。また、遅かれ早かれ 150 GB の DB サイズ制限にも達します。これらの 500,000 件の記事は、すでに 1.6 GB の DB スペースを消費しています。
私が欲しいもの
これらの HTML コンテンツが SQL DB の外に出なければならないことは明らかです。記事テーブル自体は、ユーザー、サブスクリプション、タグなどに結合して、必要な記事をリレーショナルにすばやく検出するために残しておく必要がありますが、少なくとも HTML コンテンツを保持する列は、安価なストレージにアウトソーシングできます。
一見すると、Azure テーブル ストレージは完璧に適合するように見えます
非常に安価な価格と高速なクエリで 1 つの大きなテーブルに数テラバイトのデータを格納 - SQL DB へのアドオンとして記事のコンテンツを保持する単一のテーブル ストレージ テーブルを用意するのは完璧に思えます。
しかし、ここでの比較を読むと、それはオプションでさえないかもしれないことがわかります: 私の記事の 98 % には列あたり 64 KB で十分ですが、残りの 2 % があり、いくつかの単一の記事では、行制限の 1 MB 全体でさえも可能性があります。十分ではありません。
BLOB ストレージは完全に間違っているように聞こえますが、...
したがって、Azure に残されたオプションは 1 つだけです。ブロブです。さて、それは思ったほど間違っていないかもしれません。ほとんどの場合、一度に 1 つの記事のコンテンツのみが必要です。これは、Blob Storage で問題なく高速に動作するはずです。
しかし、コンテンツも含めて一度に50、100、またはそれ以上の行が必要なクエリもあります。そのため、SQL クエリを実行して必要な記事を取得し、Blob ストレージからすべての記事を取得する必要があります。私はそれについての経験はありませんが、それを行うときにクエリのミリ秒のタイムスパンにとどまることができるとは信じられません。また、数秒かかるクエリは、私のプロジェクトでは絶対に禁止されています。
したがって、それも適切な解決策ではないようです。
私は計画を持った男のように見えますか?
少なくとも私は計画のようなものを持っています。適切なレコードのみを SQL テーブル ストレージや BLOB ストレージに "エクスポート" することを考えました。
「コンテンツが < 64 KB である限りテーブル ストレージにエクスポートし、それ以外の場合は SQL テーブルに保持します (または、この 1 つの XL レコードを BLOB ストレージにエクスポートすることもできます)」のようなものです。
それは十分にうまくいくかもしれません。しかし、それは物事を複雑にし、おそらく不必要なエラーを起こしやすくします.
それらの他のオプション
MongoDB や CouchDB など、私のニーズにより適していると思われる NoSQL DB が他にもいくつかあります (少なくとも、紙の仕様を読んだばかりの私の単純な観点からは、それらの経験はありません)。しかし、彼らは自己ホスティングを必要とするでしょう.可能であれば、私はそれを避けたいと思っています. 私は Azure を使用して、セルフ ホスティング サーバーとサービスに関して必要最小限のことを行っています。
本当にここまで読んだ?
それから、あなたの貴重な時間と私の問題について考えてくれてありがとう:)
どんな提案でも大歓迎です。ご覧のとおり、私には私のアイデアと計画がありますが、前に道を歩いた人の経験に勝るものはありません:)
ありがとう、ベルンハルト