Лучшая практика для одновременного хранения данных в памяти и базе данных на Android

Мы разрабатываем приложение для Android, которое содержит много данных («клиенты», «продукты», «заказы» ...), и мы не хотим для запроса SQLite каждый раз, когда нам нужна какая-то запись. Мы хотим как можно больше не запрашивать базу данных, поэтому мы решили всегда хранить определенные данные в памяти.

Наша первоначальная идея состоит в том, чтобы создать два простых класса:

  1. «MemoryRecord»: класс, который будет содержать в основном массив объектов (string, int, double, datetime и т. Д.), Которые являются данными из запись таблицы и все методы для ввода / вывода этих данных из этого массива.

  2. «MemoryTable»: класс, который будет содержать в основном карту [Key, MemoryRecord] и все методы для управления этой картой и вставки / обновления / удалить запись в / из базы данных.

Эти классы будут производными от всех типов таблиц, которые есть в базе данных. Конечно, есть и другие полезные методы, не перечисленные выше, но на данном этапе они не важны.

Итак, при запуске приложения мы будем загружать эти таблицы из базы данных SQLite в память, используя эти классы, и каждый раз, когда нам нужно изменить некоторые данные, мы внесем изменения в память и сразу же отправим в базу данных.

Но мы хотим от вас помощи / совета. Можете ли вы предложить что-нибудь более простое или эффективное для реализации этого? Или, может быть, какие-то существующие классы уже делают это за нас?

Я понимаю, что вы, ребята, пытаетесь мне показать, и благодарю вас за это.

Но, допустим, у нас есть таблица с 2000 записями, и я нужно будет перечислить эти записи. Для каждой из них я должен запросить другие 30 таблиц (некоторые из них с 1000 записями, другие с 10 записями), чтобы добавить дополнительную информацию в список, и это пока он "летает" (и, как вы знаете, мы должны быть очень быстрыми в этот момент).

Теперь вы скажете: «просто создайте свой основной запрос со всеми этими« соединениями »и принесите все, что вам нужно за один шаг. SQLite может быть очень быстрым, запрос, курсор, выборка и т. д. всегда будет дороже, чем просто захват записи из своего рода "кеша памяти". Я хочу прояснить, что мы не планируем хранить все данные в памяти всегда, а только некоторые таблицы, которые мы запрашиваем очень часто.

И мы пришли к исходному вопросу: как лучше всего «кэшировать» эти записи? Мне действительно нравится сосредотачивать обсуждение на этом, а не на том, «зачем вам кэшировать данные?»

29
задан Peter Mortensen 7 January 2017 в 16:29
поделиться