Как эффективно хранить входящий поток данных на Android? - PullRequest
1 голос
/ 03 июня 2011

Я подключаю устройство Android к встроенной системе сбора данных через Bluetooth.Система DAQ будет принимать выборки данных от 50 Гц до потенциально 880 Гц (возможно, в будущем - больше) и передавать их на устройство Android либо по мере сбора данных, либо в виде пакетов с более высокой частотой дискретизации.

Существует множествопримеров того, как управлять соединением Bluetooth, но не столько о том, что делать с данными.

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

Я знаю, что делать это из потока пользовательского интерфейса, поэтому нет необходимости в этом говорить.Какой носитель на Android может реагировать достаточно быстро, чтобы не отставать от этих входящих данных?Будет ли база данных SQLite достаточно быстрой?Похоже, это довольно быстро свалилось бы.

1 Ответ

0 голосов
/ 03 июня 2013

Я знаю, что это очень старый вопрос, но я все равно решил дать ответ.SQLite должен работать.Было бы неплохо буферизовать данные в массив байтов определенной длины, в зависимости от того, какие именно данные вы храните.Как только этот массив заполнится, вставьте его в базу данных SQL и примите все новые данные в новый массив.Как только этот заполнится, сохраните его в базе данных;и так далее.Таким образом, вы можете достичь своего рода двойной буферизации.Модификация базы данных включает дисковый ввод-вывод;вы бы использовали буфер, потому что более эффективно записывать большой объем данных на диск, чем записывать множество более мелких фрагментов.

...