3

simpledbでこのようなことが可能かどうかはわかりません。次のタイプのsimpledbデータ構造を使用しようとしています。

  1. 各アイテムには複数の名前/値のペアがあります(ここでの名前は属性名です)。

    item1serial_num-
    >値
    item2serial_num-
    >値

  2. そのような数のアイテムがドメイン内にあり、そのようなドメインが複数あります。

次のようなクエリを実行したい:

select * from domain where attribute-name = 'serial number'

複数のアイテムおよびドメインにわたる1つのシリアル番号に関連するすべてのアイテムを取得します。これは可能ですか?

2番目の質問は、フィールドの組み合わせをアイテム名として使用することに関するものです。
例えば
、上記の構造では、

Foo_datetime
            serial -> value

Foo1_datetime
            serial -> value

次に、特定の日時範囲と特定のFooまたはFoo1の間でアイテムをクエリしますか?何かのようなもの

 select * from domain where itemname = 'Foo' and itemname > datetime and itemname < datetime.
4

2 に答える 2

4

最初の質問では、提案するクエリは、「select *」または「select serial_num」のどちらの方法でも、期待どおりに機能します。SimpleDB クエリ言語は SQL に似ています。ただし、単一のクエリを複数のドメインに適用する方法はありません。各クエリは、1 つのドメインに固有です。クロスドメイン クエリを発行するには、各ドメインに対してクエリを発行する必要があります。これによりクエリの量が倍増しますが、クエリは待機せずに一度に送信できるため、応答を待つ時間は倍増しません。

2 番目の質問に答えるために、アイテム名は実際にデータの保存とクエリに使用できます。この場合、クエリ内で関数「itemName()」を使用する必要があります。最終的な例を修正するために書き直すと、次のようになります。

select * from domain where itemName() between 'Foodatetime1' and 'Foodatetime2'

datetime 1 と 2 は実際の値に置き換えられます。

于 2010-06-21T14:32:48.683 に答える
1

Mockyの答えに少し追加したいだけです。SimpleDBは日付を文字列として保存/比較します。したがって、注意して、2010-1-22のように保存される日付を避け、常にISO8601準拠の形式で日付を保存してください。

于 2012-02-22T11:13:58.377 に答える