SQLite или текстовые файлы быстрее для хранения данных датчика в Android? - PullRequest
0 голосов
/ 06 ноября 2018

Я хотел бы реализовать приложение, которое хранит данные от нескольких датчиков, таких как ускорение, гироскоп, окружающий свет и касание (давление, положение). Есть две возможности для сохранения данных. Я мог бы использовать базу данных SQLite, предоставляемую Android, или простые CSV-файлы. Моя главная проблема - производительность, потому что частота дискретизации датчиков довольно высока.

Является ли производительность выше для встроенной базы данных SQLite или для файлов CSV? Или есть другие возможности, которые обеспечивают лучшую производительность? Для базы данных я мог бы использовать одну базу данных для каждого потока или только одну базу данных для всех потоков, а для файлов CSV я бы использовал один файл для каждого потока.

1 Ответ

0 голосов
/ 07 ноября 2018

В зависимости от того, как он используется, SQLite может работать быстрее, чем прямой ввод-вывод файловой системы. 35% быстрее, чем файловая система .

Выписка (сделанный вывод) из вышесказанного: -

Итак, пусть ваш вывод будет таким: задержка чтения / записи для SQLite конкурирует с задержкой чтения / записи отдельных файлов на диске. Часто SQLite быстрее. Иногда SQLite работает почти так же быстро. В любом случае, это статья опровергает распространенное предположение, что реляционная база данных должен быть медленнее, чем прямой ввод-вывод файловой системы.

Конечно, это касается только доступа к необработанным данным, а затем больших двоичных объектов (что может быть или не быть более благоприятным). Когда индексы начинают включаться, то в основном вы добавляете дополнительные таблицы, которые должны быть обновлены. Скорее всего, будет справедливое предположение, что показания, скорее всего, будут больше, чем одно значение, и что они читают тип (какой датчик сделал показание), и когда это считывание было выполнено, также будут записанные значения, поэтому эти дополнительные значения должны быть считается, что они вполне могут быть проиндексированы (возможно, создание индексов при необходимости, а затем их удаление при завершении может быть полезным).

Таким образом, вполне возможно, что на каком-то этапе, если такие значения будут проиндексированы, файловая система будет быстрее. Однако это, скорее всего, будет происходить за счет более сложного и более медленного поиска.

Существуют также системные параметры, например, sqlite PRAGMA ( размер страницы связанный ) можно использовать для настройки некоторых параметров.

Вы, вероятно, НЕ хотите включать AUTOINCREMENT Каковы издержки использования AUTOINCREMENT для SQLite на Android? .

Короче говоря, вам, возможно, придется рассмотреть вопрос о балансировке производительности / оптимизации / экспериментировании со временем.

...