как сжать большое количество данных для экономии места в базе данных и вычислительной мощности - PullRequest
0 голосов
/ 02 ноября 2019

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

Данные будут выглядеть примерно так

TimeStamp | Sensor1 | Sensor2 | Sensor3 | Sensor4 | . . . . . | Sensor64
 00:00:01 |    1    |    0    |    0    |    0    |           |    3
 00:00:02 |    1    |    8    |    0    |    0    |           |    3
 00:00:03 |    1    |    8    |    0    |    0    |           |    3
 00:00:04 |    1    |    2    |    0    |    0    |           |    3
 00:00:05 |    0    |    8    |    0    |    0    |           |    3
 00:00:06 |    0    |    8    |    0    |    0    |           |    3
 00:00:07 |    0    |    0    |    0    |    0    |           |    3
 00:00:08 |    0    |    0    |    0    |    0    |           |    3
 00:00:09 |    0    |    0    |    0    |    0    |           |    3
 00:00:10 |    1    |    2    |    0    |    0    |           |    3

Совершенно определенно будет время, когда данные становятся повторяющимися (TS 7-9 и 2-3) и хотели бы узнать, как сжать эту часть для хранения базы данных, и когдаwebpage / app извлекает данные, затем webpage / app распаковывает данные, которые будут представлены пользователю.

Планируемая база данных, которую нужно использовать, - monggoDB (но она открыта для использования другими базами данных)

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

TimeStamp | Sensor1 | Sensor2 | Sensor3 | Sensor4 | . . . . . | Sensor64
 00:00:01 |    1    |    0    |    0    |    0    |           |    3
 00:00:02 |    1    |    8    |    0    |    0    |           |    3

 00:00:04 |    1    |    2    |    0    |    0    |           |    3
 00:00:05 |    0    |    8    |    0    |    0    |           |    3

 00:00:07 |    0    |    0    |    0    |    0    |           |    3



 00:00:10 |    1    |    2    |    0    |    0    |           |    3

, но это решениене является надежным и будет более эффективным, если будет много повторяющихся данных.

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

просто необработанный расчет, каждый из этих датчиков выплевывает 16-битное целое число

16 bit integer x 64 sensors x 2 628 000 seconds in a month = 2 691 072 000‬ bits / 2.69 GB

2,9 ГБ за одно нажатие - это невероятно большой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...