Datastore е най-добрият начин за съхраняване на обобщени вложени данни за по-добри заявки

Аз съм начинаещ в хранилището на данни. използвайки го за приложение, което не е 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

Тип: AttributeValue

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“ във всички видове, тъй като това ще бъде основният филтърен ключ.

Зададох индекс за всички свойства, за да активирам всеки филтър за свойства, но поради един филтър за неравенство на едно ограничение за свойство ме накараха да направя пауза.

Както можете да видите, не мога да филтрирам както по evt_datetime, така и по evt_count с някой от (>,‹,>=,‹=).

Има ли по-добър начин да се проектират тези схеми за използване на множество филтри или заявка без вид?


person shivg    schedule 04.11.2015    source източник
comment
Това е малко широко за стека... във всеки случай, обикновено, когато хората се опитват да направят множествено неравенство, ние предложихме изчислено свойство, което можете да използвате. Например, да кажем, че винаги ще искате събития с брой над 200, можете да добавите булев параметър over_200 и след това да използвате = върху ТОЗИ параметър. Като цяло, ако имате нужда от двете неравенства, най-доброто предложение е да направите заявка с едното, след което да използвате код, за да филтрирате другото   -  person Patrice    schedule 05.11.2015


Отговори (1)


Отговорът може би е да съхранявате всичко в едно цяло. Използвайте повтарящи се свойства със StructuredProperties (или LocalStructuredProperties, ако искате да имате сложна структура).

Не е нужно да търсите точните обекти, които търсите. Направете заявката с една заявка и филтрирайте резултатите по код.

Тази възможност наистина зависи от това как съхранявате това и колко повтарящи се елементи планирате да добавите (тъй като размерът на обекта не може да надвишава 1MB памет).

person janscas    schedule 11.11.2015