Задача: хранить большие объемы логов которые состоят из нестольких интовых ключей и нескольких строк.
Запись нужна быстрая. Объемы большие. Чтение редкая операция, но по нескольким ключам одновременно.
тоесть структура примерно следующая:
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 подходит как нельзя лучше, и их использование очень сильно экономит время при разработке. А оптимизатор запросов, который умеет сам выбирать индексы в зависимости от структуры (распределения по значениям) данных и условий, позволит значительно уменьшить потребление ресурсов.
>Вот как раз для этого 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?
какие обьемы? база локальная?
Известно, что самый большой обьем данных сейчас собирается
в ЦЕРНе (эквивалент 10 км стопке из ДВД положенных
один на другой). Для хранения данных, запросов и анализа используется
ROOT (http://root.cern.ch/). Рекомендую, как один из авторов.
>какие обьемы? база локальная?
10 000 - 100 000 простых записей в день (практически та структура, что написал выше)
База локальная (данные приходят на одну машину по сети)
>ROOT (http://root.cern.ch/)
пасибо, посмотрим