Вопрос

Наша компания некоторое время просматривала формат файла для хранения большого количества данных лабораторных датчиков. Каждый раз, когда они запускают инструменты, он генерирует файл, который мы потребляем и храним в базе данных для трендов и т. Д. Иерархический формат предпочтительнее, поскольку он позволяет нам «группировать» данные. Это промежуточный формат файла, прежде чем мы разместим данные в базу данных. Из -за нашей среды развития это наш список приоритетов:

1) .NET COMPARINT. API будет использоваться в веб -службах и клиентском приложении. Мы не имеем никакого контроля над средой клиента, поэтому лучшее решение Pure.net лучше.

2) Скорость чтения. Наши чтения случайные, а не последовательные. Чем быстрее тем лучше. Если бы мы не были магазином разработки C #, я бы сказал, что скорость № 1.

3) Размер файла. Если сам файл велик, желателен хороший коэффициент сжатия (86% и выше).

4) Основная площадь памяти чтений. Из -за тома данных мы не можем просто прочитать его. У каждого датчика есть пара времени/значения. Это может генерировать более 4 миллионов пар. Это устранило XML для нас.

В настоящее время мы смотрели HDF5 и обнаружил, что API ужасно не хватает на арене .NET, не может выполнять веб -сервисы, но имеет размер/скорость, которые мы ищем. Я тоже посмотрел на Json И это выглядело многообещающе, но я не пытался прочитать кусок данных обратно. Я искал в Интернете и не нашел много форматов файлов, которые делают то, что нам нужно. Любая помощь ценится.

Это было полезно?

Решение

Вам нужна база данных B-Tree, такая как: SQL Server Compact

Также посмотрите на SQLitehttp://sqlite.phxsoftware.com/

Ctree - это скорее ISAM, если вы можете обойтись с частью SQL Google для CTREE

Извините, я бы ссылался больше, поэтому не позволяю мне БК, это новый акцент

Другие советы

Я думаю, что вам может быть лучше сохранить эту информацию в таблице в вашей базе данных, если вы используете SQL Server, Varbinary должен выполнять задание.

Ваша таблица может быть иерархическим, включив [родительский] поле, которое может быть нулевым для узлов верхнего уровня.

Если вы индексируете свое значение поиска (идентификатор файла), случайный доступ должен быть быстрым. Если вам нужна сжатие, вы можете попробовать использовать классы GZIP для форматирования своего сырого байта [], прежде чем приложить его в базу данных.

Использование базы данных для этой информации дает вам возможность:

1) Запустите сумасшедшие запросы, соединения и т. Д. 2) Вы можете индексировать несколько столбцов для более быстрого поиска по разным значениям ключей 3) .NET Конечно, есть несколько API 4) Сжатие может быть добавлено, если оно не влияет на скорость слишком плохо 5 ) Резервное копирование данных должно быть вожженным

Этот совет вам помогает?

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

Если бинарное дерево/сбалансированное формат дерева не слишком больших усилий, вы можете посмотреть на его хранение в Newick Format. Анкет Он также может поддерживать формат пары ключей/значения, например, JSON.

Однако это не больше легкого веса, чем JSON - "{}" заменяются "()".

((енот, медведь), ((sea_lion, seal), ((обезьяна, кошка), ласка)), собака);

Очевидно, что, будучи двоичным деревом, очень быстро запрашивается, хотя, вероятно, не более быстрее, чем словарь от объекта JSON, однако у него нет связанных иерачи в стиле списка (объектный график).

Боюсь, я не мог найти для этого .NET API -интерфейсы, просто Java и C.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top