2008-09-18 3 views
2

У меня есть эксперимент с потоком данных 1 Мбит/с с числовыми данными, которые необходимо сохранить для последующей обработки. Кажется так же легко писать непосредственно в базу данных, как в CSV-файл, и тогда у меня будет возможность легко получить подмножества или диапазоны.SQLite/Firebird, встроенный для числовых данных

У меня есть опыт работы с sqlite2 (когда у него были только текстовые поля), и это выглядело так же быстро, как доступ к необработанному диску. Любые мнения о лучших текущих СУБД для этого приложения?

Извините, вам следует добавить, что это C++ в основном на окнах, но кросс-платформа - это хорошо. В идеале формат двоичного файла DB shoudl является кросс-платформенным.

ответ

3

Если вам нужно только для чтения/записи данных, без каких-либо проверки или манипуляции, проделанной в базе данных, то оба должны делать это хорошо. Файл базы данных Firebird может быть скопирован, если система имеет одинаковую endianess (т. Е. Вы не можете копировать файл между системами с процессорами Intel и PPC, но Intel-Intel в порядке).

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

BTW, если вы решите попробовать Firebird, я настоятельно рекомендую вам использовать библиотеку IBPP для доступа к ней. Это очень тонкая оболочка C++ с API-интерфейсом Firebird. У меня около 10 классов, которые инкапсулируют все, и это мертво-простое в использовании.

0

Зависит от того, какой язык вы используете. Если это C/C++, TCL или PHP, SQLite по-прежнему остается одним из лучших в сценарии с одним писателем. Если вам не нужен SQL-доступ, библиотека DB-berkeley может быть немного быстрее, например, Sleepycat или gdbm. С несколькими писателями вы можете рассмотреть отдельное решение клиент/сервер, но оно не похоже на то, что вам нужно. Если вы используете Java, hdqldb или derby (поставляется с JVM Sun под брендом «JavaDB»), по-видимому, являются решениями выбора.

2

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

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

BerkeleyDB имеет ряд хороших функций, для которых он будет использоваться, но ни один из них не применяется в этом сценарии, imho.

Я бы сказал, соглашайтесь с sqlite3, если вы можете принять лицензионное соглашение.

-D

+0

То, что я делаю в данный момент, STL-> XML, но это, кажется, много накладных расходов на очень небольшой прирост. DB дает мне возможность сделать что-то умнее в будущем, не записывая больше кода. – 2008-09-18 19:09:38

0

Я подозреваю, что ни одна из баз данных не позволит вам писать данные с такой высокой скоростью. Вы можете проверить это самостоятельно, чтобы быть уверенным. По моему опыту - SQLite не удалось ввести INSERT более 1000 строк в секунду для очень простой таблицы с одним целым первичным ключом.

В случае проблемы с производительностью - я бы использовал формат CSV для записи файлов, а позже я загрузил их данные в базу данных (SQLite или Firebird) для дальнейшей обработки.

+0

Спасибо, высокоскоростное приложение никогда не материализовалось, поэтому у меня не было возможности его подтолкнуть. – 2009-07-30 00:32:35

0

Возможно, вы также захотите рассмотреть формат файла цифровых данных, специально предназначенный для хранения этих типов больших наборов данных.Например:

  • HDF - наиболее распространенный и хорошо поддерживается на многих языках с бесплатными библиотеками. Я очень рекомендую это.
  • CDF - аналогичный формат, используемый НАСА (но применимый кем-либо).
  • NetCDF - другой аналогичный формат (последняя версия на самом деле урезана HDF5).

Эта ссылка имеет некоторую информацию о различиях между выше набора данных типов: http://nssdc.gsfc.nasa.gov/cdf/html/FAQ.html

Смежные вопросы