Как хранить большое количество словарей Python в хранилище данных и фильтровать / запрашивать его? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть словарь Python со следующими полями:

{
    "attribute_a": "3898801b-4595-4113-870b-ee5906457edf", # UUID
    "attribute_b": "50df4979-7448-468a-994c-96797b0f958b", # UUID
    "attribute_c": "0f6b2331-f86b-4e76-9efe-42ef8d843273", # UUID
    "attribute_d": "blah1", # string
    "attribute_e": "blah2", # string
    "attribute_f": "72.154.80.0", # IP Address
    "attribute_g": "blah3", # string
    "created_timestamp": datetime.datetime.now() # datetime
}

Теперь самое сложное: у меня будет около 3 миллионов таких записей, создаваемых ежедневно, и мне нужно хранить как минимум последние 90 днейСтоимость этих записей в хранилище данных определенного типа.

После сохранения каждой записи ее обновлять никогда не потребуется (но ее можно удалить).И мне понадобится возможность время от времени запрашивать это хранилище данных, чтобы найти все записи на основе соответствия любому из первых 7 атрибутов и / или сравнения даты с последним атрибутом created_timestamp.В основном я буду фильтровать только по attribute_a и захочу увидеть соответствующие записи, отсортированные по created_timestamp.

Какое хранилище данных мне следует использовать?Я боюсь, что если я попытаюсь сохранить это огромное количество данных в таблице MYSQL с хотя бы одним индексом, то слишком много данных приведет к тому, что вставки станут слишком медленными.И если на нем нет индексов, тогда запрос становится невозможным.Поэтому я склоняюсь к решению NoSQL, подобному MongoDB.

Однако у меня нет опыта работы с NoSQL, и я обеспокоен, могу ли я использовать его для этой цели.Смогу ли я отфильтровать несколько полей?Сможет ли он обрабатывать поле created_timestamp как фактическую дату, а не как строку?Должен ли я установить один attribute_a в качестве первичного ключа и все остальные атрибуты в качестве вторичных глобальных ключей?Если я сделаю это, вставки станут очень медленными?Может ли он вернуть мне данные, отсортированные по дате created_timestamp?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...