10kのテキストデータを保存する方法はありますが、それが受け入れられるかどうかは、保存する必要があるものと使用する方法によって異なります。
大量のデータ(特にバイナリデータ)を格納する必要がある場合は、S3ファイルポインタが魅力的な場合があります。このシナリオでSimpleDBが追加する値は、SimpleDBに格納されているファイルメタデータに対してクエリを実行する機能です。
10kに制限されたテキストデータの場合、SimpleDBに直接格納することをおすすめします。 1つのアイテムに簡単に収まるが、複数の属性に分散する必要がある。これを行うには基本的に2つの方法があります。
一方的な方法は、柔軟性が高く、検索にも便利ですが、データに触れる必要があります。データを約1000バイトのチャンクに分割し、各チャンクを属性値として複数の値の属性に格納します。複数の値を持つ属性には順序付けが行われないため、各チャンクに順序番号を付ける必要があります(例:01)
1つの属性にすべてのテキストを格納しているということは、述語の属性名。 1kから200 + kまでの任意の項目に異なるサイズのテキストを追加して、適切に処理します。しかし、あなたの前に付いた行番号があなたの質問に肯定的になることに注意しなければなりません。例えば、01
を検索している場合、すべての項目がそのクエリと一致します。
テキストをSimpleDB内に保存するもう1つの方法では、テキストチャンク内に任意の注文データを配置する必要はありません。あなたは、各テキストチャンクを別の名前付き属性に置くことによって注文を行います。たとえば、属性名はdesc01
desc02
... desc10
です。次に、各チャンクを適切な属性に配置します。両方の方法でフルテキスト検索を行うことはできますが、この方法では検索が遅くなります。なぜなら、多くの述語を指定する必要があり、SimpleDBは各属性の別のインデックスを検索するためです。
データベースでは、このタイプの低レベルの詳細をデータベース内で処理するのに慣れているので、このタイプの作業をハックとして考えるのは簡単かもしれません。 SimpleDBは、この種のものをデータベースからクライアントにプッシュし、ファーストクラスの機能として可用性を提供する手段として特別に設計されています。
リレーショナルデータベースがテキストを1kチャンクに分割して実装の詳細としてディスクに格納していることが判明した場合、ハックのようには見えません。問題は、SimpleDBクライアントの現在の状態が、この種のデータ形式を自分で多く実装しなければならないということです。これは、理想的にはスマートクライアントであなたのために処理されるものです。スマートクライアントはまだ自由に利用できません。
データの取得にはどのような要件がありますか?それを検索したり、フィールドなどで区切ったりする必要がありますか? – Mark
私はテキストデータを表示するだけです。このデータにタグを付ける予定で、1024バイトを超える文字列をユーザーに照会して表示する予定です。私は都市/州/記述の情報を持っていると思います。都市と州に対して照会すると、その説明がユーザーに表示されます。 –
これはSimpleDBの優れた使い方のようです。アイテムを格納するときにテキストを分割するルーチンと、選択結果から戻すときにテキストを分割するルーチンを追加するだけです。 "SELECT desc from FROM Domain001 where city =?INTERSECTION state =?" – Mocky