2013-06-18 2 views
1

Я пишу Android приложение, которое будет состоять изМожно ли использовать встроенное хранилище SQLite для одновременного хранения данных?

  1. фона службы 1, который считывает значение датчиков через регулярные промежутки времени (например, каждые пять минут программа считывает показание датчика в течение 30 секунд, в течение периода измерения значений считываются два раза в секунду),
  2. справочная служба 2, которая анализирует значения датчиков и вычисляет некоторые показатели из них,
  3. фоновое обслуживание 3, которое выполняется один раз в 3-7 дней и удаляет старые данные из базы данных (оба значения датчиков и показатели) и
  4. Деятельность GUI, которая ws некоторые из значений датчика и/или показателей, если пользователь открывает приложение и нажимает кнопку.

Будет 2 стола - SensorData и Metrics. Фоновая служба 1 будет писать до SensorData. Фоновая служба 2 будет читать с SensorData и писать до Metrics. Фоновая служба 3 удалит строки из обеих таблиц. Активность GUI будет считываться из обеих таблиц.

Я думал о том, как реализовать поточное хранилище для значений датчиков и показателей.

Очевидным решением является использование встроенной базы данных SQLite.

я следующие вопросы:

  1. Безопасно ли использовать в этой ситуации?
  2. Будет ли SQLite дескриптора Android записывать два числовых значения (long и double) два раза в секунду?
  3. Поддерживает ли он параллельный доступ (что происходит, когда действие GUI выдает запрос на SensorData, а фоновая служба 1 пытается записать в ту же таблицу одновременно)?

ответ

2
  1. с помощью SQLiteOpenHelper как синглтон, вы потокобезопасны. SQLiteOpenHelper обрабатывает блокировку базы данных sqlite (которая представляет собой механизм sqlite для обработки одновременных операций чтения/записи).
  2. Это что-то испытать. но, вообще говоря, вам нужно часто писать в базу данных ?. вы можете кэшировать данные в памяти и сбрасывать их в базу данных медленнее.
  3. Короткий ответ: «Да, он поддерживает одновременный доступ». для получения дополнительной информации, просмотрите этот sqlite document, андроид-sqlite - это просто обертка. вы можете настроить его так, как считаете нужным после прочтения этого документа.
Смежные вопросы