Наиболее оптимальный способ создания вложенной базы данных вместо чтения/записи JSON на диск

#python #json #mongodb #performance #upsert

#питон #json #mongodb #Производительность #опрокинуть

Вопрос:

У меня есть API, в котором есть вложенные данные, которые я пытаюсь запросить, было бы неудобно и слишком много обслуживания, чтобы сгладить эти данные в базе данных SQL, я запрашиваю эти данные каждые 10 секунд, и мне нужно сделать 3 вещи, каждый запрос может возвращать вложенные элементы, принадлежащие более старому родительскому узлу:

Я делаю это на python и пытаюсь сделать это асинхронно, на данный момент я в основном: 1 — считываю весь JSON в память (у меня достаточно оперативной памяти). 2 — обновление. 3 — запись на диск.

Несмотря на то, что я использую файлы AI в сочетании с JSONdump, как только jsondumps начинает работать, все мое приложение блокируется от выполнения других задач, поэтому я начал изучать другие варианты, и кажется, что в MongoDB есть JSON, если это вариант, что я хочу сделать:

1 — иметь возможность запрашивать элементы по элементам, которые являются дочерними узлами каждого элемента в JSON. 2 — иметь возможность обновлять элементы в JSON, которые уже существуют, с помощью первичного ключа (вставить?) 3 — иметь возможность быстро записывать/читать весь набор данных, не блокируя мое асинхронное приложение.

Это лучший подход или есть библиотека или метод, чтобы сделать это лучше?

Спасибо!

Комментарии:

1. используйте reddis, он сохранит ваши данные, и вы сможете читать их в 10 раз быстрее, чем обычную базу данных, например mysql или mongose

2. А база данных SQLite ? Сервера нет, и вы можете выполнять SQL-запросы .

3. Я уже использую SQLite, но содержимое JSON и узлов может часто меняться, мне нужно поддерживать структуру вложенности объектов во время чтения/записи без необходимости разрабатывать схему для каждого json.

4. MongoDB допускает вложенные поля вложенных документов и массивов (массивы с вложенными вложенными документами)-до 100 уровней. И структура документа имеет типы данных, подобные JSON (и более). Написание одного документа с вложенными данными-это одна транзакция/операция. Это полезно в вашей ситуации — пункты (1) и (2).

5. Спасибо @prasad_ Я собираюсь использовать формат MongoDB JSON, благослови 🙂