ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
1017471 Топик полностью
RxTx (11.07.2020 17:33 - 17:38, просмотров: 634) ответил MBedder на Накидайте идей по оптимальному формату записи для системы сбора данных
У меня практически работающая система сбора информации построенная мной с back-end'ом на SQLite. Гетерогенные пакеты информации стекаются real-time потоками (~около 10ка "тонких") в базу данных со скоростью 100пак/сек, стробируясь пространственно-временной меткой (GPS тоже пишется, но строб дает не он). Потоки динамически run-time настраиваемы (таблица-поток). Некоторые потоки представляют собой "толстые" Lidar данные (пакет 10-20кб * ~50-100 пак/сек). SQLite 

работает у нас там же где крутится основной софт расчетов, на боротовом встроенном ПК под i3/i5,SSD. SQLite перспективно понимать как уровень выше над велосипедом файлов, как технологию, позволяющую связывать, контролировать и извлекать структуры данных реляционным методом. Free утилит для работы с SQLite довольно много, просматривать БД можно во время записи. Сформированными файлами БД мы обмениваемся. SQLite можно заставить работать также быстро как запись в файл (почитав FAQ/статьи - например строить индексы для произвольного быстрого поиска/выборки можно позже), синхронно или асинхронно, в кэширующем не кэширующем режиме итд. Кроме того он ориентирован на embedded, прошел проверку практикой, разрабатывается порядка 20 лет, покрыт множественными тестами. Применяется без обслуживания например в миллиардах Android устройств. На первый взгляд пугает что это "аж SQL". Однако для задач записи SQL будет использоваться только как DDL, далее вся вставка в БД работает через API, поэтому это будет не медленнее чем прямая запись в файл, или медленнее на доли процента, если потрассировать машинерию записи, то видно что она не сложна. Размеры таблиц растут не так быстро т.к. SQLite пакует внутри себя varchar / Int типы данных и NULL поля записей. SQLite можно к себе прикомпилировать (с инлайнами всего и вся) в виде одного .c файла. Профайлил SQLite при помощи Google Benchmark, на i5 его кишки работают нано/микросекунды остальное это wait for I/O. Ко всему прочему надо добавить транзакционность, неубиваемость журналируемой БД, отличную документацию и наличие десятков tutorial сайтов/статей с примерами C кода.

https://www.sqlite.org/fasterthanfs.html

https://www.sqlite.org/whentouse.html

https://www.sqlite.org/famous.html

Airbus confirms that SQLite is being used in the flight software for the A350 XWB family of aircraft.

Спасибо, князь. Вы настоящий дворянин. И программист.