LINUX.ORG.RU

Помогине выбрать Database Engine


0

0

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

тоесть структура примерно следующая:
struct {
  int int1;
  int int2;
  int int3;
  std::string str1;
  std::string str2;
  time_t timestamp;
}

Для больших объемов данных и простых запросов sql базы данных не подходят. решил использовать nonsql.

Среди всего, что нашел, понравилось berkeley db (вроди как подходит - так как можно создавать secondary db для индексов) и cdb (не уверен что подходит).

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

> Для больших объемов данных и простых запросов sql базы данных не подходят.

Вот как раз для этого SQL подходит как нельзя лучше, и их использование очень сильно экономит время при разработке. А оптимизатор запросов, который умеет сам выбирать индексы в зависимости от структуры (распределения по значениям) данных и условий, позволит значительно уменьшить потребление ресурсов.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

>Вот как раз для этого SQL подходит как нельзя лучше, и их использование очень сильно экономит время при разработке. 

mysql тормозит сильно на записи (основная операция) да и скорость поиска не очень радует.

а запросы предельно вростые. например список возможных запросов на структуре которую я примел в первом посте:

select * from t where int1=1 and (t1<=timestamp<=t2)
select * from t where int1=1 and int2=10 and (t1<=timestamp<=t2)
select * from t where int1=1 and int2=10 and int3=15 and (t1<=timestamp<=t2)

Зачем тут sql? Разве не будет оптимальнее использовать тот же berkeley db?

stpg
() автор топика
Ответ на: комментарий от Deleted

> Для больших объемов данных

какие обьемы? база локальная?
Известно, что самый большой обьем данных сейчас собирается
в ЦЕРНе (эквивалент 10 км стопке из ДВД положенных
один на другой). Для хранения данных, запросов и анализа используется
ROOT (http://root.cern.ch/). Рекомендую, как один из авторов.

Valeriy_Onuchin ★★
()
Ответ на: комментарий от Valeriy_Onuchin

нужна специально заточенная база без репликации и прочих прибамбасов
в новостях как-то пробегала

kto_tama ★★★★★
()
Ответ на: комментарий от Deleted

на гугле говорят sqlite медленнее. но возможно попробую написать прототит для каждой базы

stpg
() автор топика
Ответ на: комментарий от Valeriy_Onuchin

>какие обьемы? база локальная? 10 000 - 100 000 простых записей в день (практически та структура, что написал выше) База локальная (данные приходят на одну машину по сети) >ROOT (http://root.cern.ch/) пасибо, посмотрим

stpg
() автор топика
Ответ на: комментарий от kto_tama

>нужна специально заточенная база без репликации и прочих прибамбасов
в новостях как-то пробегала

Когда пробегала не подскажите?=)

stpg
() автор топика
Ответ на: комментарий от iRunix

>тетка на странице закачку жжот

В Церне тоже уважают добротные сиськи:)

lvv
()
Ответ на: комментарий от anonymous

>посмотри/попробуй GOODS
Пасибо. Глянем
>А вообще напиши тест и померяй Berkley DB, GOODS, SQL, и т.п. на своей задаче.
Так и думаю поступить.

stpg
() автор топика
Ответ на: комментарий от stpg

неужели наноторсионная механическая ТС?

anonymous
()
Ответ на: комментарий от stpg

> а запросы предельно вростые. например список возможных запросов на структуре которую я примел в первом посте:

> select * from t where int1=1 and (t1<=timestamp<=t2)

А вы индексы пробовали? При условии наличия индекса по timestamp в этом запросе просто нечему тормозить.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.