1

私はデータストアの初心者です。非GAEアプリケーションに使用します。

私は自分のユースケースにより良い設計を求めています。

クエリのサポートを向上させるために、複数の種類でフラット化して格納することにより、ネストされた集計データの下に格納します。

"DateTime": "2015-10-21 12:10:50",
"Domain": "abc.com",
"Events": [
    {
        "EventName": "visit",
        "EventCount": "188",
        "Attributes_Aggregations": [
            {
                "Name": "color",
                "Value_Aggregations": [
                    {
                        "Value": "red",
                        "Count": "188",
                        "Unique_Users": [
                            {
                                "ID": "user1",
                                "Count": "38"
                            },
                        ]
                    },
                ]
            },
        ]
    },
]

5種類収納しています。すべての種類は、祖先キーとして別の種類に関連付けられます。

種類: ドメイン

domain_name - abc.com

種類:イベント

evt_name - visit
evt_count - 188
evt_datetime - 2015-10-21 12:10:50
ancestor_key - Domain abc.com

種類:属性

att_name - color
evt_datetime - 2015-10-21 12:10:50
ancestor_key - Domain abc.com Event visit

種類: 属性値

att_value - red
att_value_count - 108
evt_datetime - 2015-10-21 12:10:50
ancestor_key - Domain abc.com Event visit Attribute color

種類: ユーザー

user_id - user1
count - 38
evt_datetime - 2015-10-21 12:10:50
ancestor_key - Domain abc.com Event visit Attribute color AttributeValue red

'evt_datetime' プロパティをすべての種類に追加しました。これがプライマリ フィルター キーになるからです。

すべてのプロパティにインデックスを設定して任意のプロパティ フィルターを有効にしましたが、1 つのプロパティ制限に対する 1 つの不等式フィルターが原因で一時停止しました。

ご覧のとおり、(>、<、>=、<=) のいずれかで evt_datetime と evt_count の両方をフィルタリングすることはできません。

これらのスキーマを複数のフィルターまたは種類のないクエリを使用するように設計するより良い方法はありますか?

4

1 に答える 1

1

おそらく答えは、単一のエンティティ内にすべてを格納することです。StructuredProperties (複雑な構造が必要な場合は LocalStructuredProperties) で繰り返しプロパティを使用します。

探している正確なエンティティを照会する必要はありません。単一のクエリでクエリを実行し、結果をコードでフィルター処理します。

この可能性は、これをどのように保存しているか、および追加する予定の反復アイテムの数によって異なります (エンティティのサイズは 1 MB のストレージを超えることはできないため)。

于 2015-11-11T08:58:24.213 に答える