Наше десктопное приложение обрабатывает довольно много данных и держит их всем в памяти. Обычного десктопа с 1-2ГБ оперативной памяти не хватает. После длительных совещаний решили использовать локальную базу данных, из которой было бы удобно извлекать наши горы данных.
Подскажите БД (можно даже платную), которая бы соответствовала следующим требованиям:
ОБЯЗАТЕЛЬНО
* Не надо инсталлировать отдельно от нашего приложения (т.е. чтобы пользователь устанавливал нашу программу без дополнительных телодвижений).
* Не надо администрирования.
* Чтобы база не "слетала" при высокой нагрузке, нехвате памяти HDD или RAM.
* Работала на объёмах данных больше 4ГБ
ЖЕЛАТЕЛЬНО (в порядке убывания значимости)
* Умение создавать новые instance базы и складировать в указаное место в указаный файл.
* С интерфейсом .Net.
* Чтобы умела хранить stored procedures.
* Умение кешировать часто используемые данные.
* Умение синхронизироваться самостоятельно с удалённой базой данных.
fbembed — встроенная версия СУБД Firebird KS>Подскажите БД (можно даже платную), которая бы соответствовала следующим требованиям: KS>ОБЯЗАТЕЛЬНО KS>* Не надо инсталлировать отдельно от нашего приложения (т.е. чтобы пользователь устанавливал нашу программу без дополнительных телодвижений).
нужны только несколько dll. KS>* Не надо администрирования.
не требует. KS>* Чтобы база не "слетала" при высокой нагрузке, нехвате памяти HDD или RAM.
вопрос непонятен, что значит слетала? KS>* Работала на объёмах данных больше 4ГБ
работает.
KS>ЖЕЛАТЕЛЬНО (в порядке убывания значимости) KS>* Умение создавать новые instance базы и складировать в указаное место в указаный файл.
умеет. KS>* С интерфейсом .Net.
есть провайдер ADO.NET KS>* Чтобы умела хранить stored procedures.
умеет не только хранить, но и выполнять KS>* Умение кешировать часто используемые данные.
умеет KS>* Умение синхронизироваться самостоятельно с удалённой базой данных.
репликация? не умеет.
Я бы посоветовал попробовать объектно ориентированную бд что нибудь типа http://www.db4o.com/
Правда ничего не могу сказать насчет производительности — надо тестировать.
Но то что вы не кисло с экономите на объектно реляционном маппинге это факт
Здравствуйте, Azzw, Вы писали:
A>Я бы посоветовал попробовать объектно ориентированную бд что нибудь типа http://www.db4o.com/ A>Правда ничего не могу сказать насчет производительности — надо тестировать. A>Но то что вы не кисло с экономите на объектно реляционном маппинге это факт
Эта база довлоьно тормознута. А у нас слишком много данных. За один вызов на надо будет вычитывать до 1ГБ информациию.
Всем спасибо, кто ответил.
Выбор у нас стоит между sqlite и fbembed (Firebird). sqlite пока проигрывает из-за действительно lite набор фичей. (Мало типов данных, нет хранимых процедур.)
Очень интересует ваш опыт, коллеги. БД у нас планируется на 1-10ГБ мелких данных, большая часть из которых строки.
Самое важное — это чтобы быстро читались данные.
Больше требований, в принципе, нет.
Здравствуйте, Kore Sar, Вы писали:
KS>Очень интересует ваш опыт, коллеги. БД у нас планируется на 1-10ГБ мелких данных, большая часть из которых строки. KS>Самое важное — это чтобы быстро читались данные.
А создать тестовую базу и замерить скорость религия не позволяет? С одной стороны sqlite проще и тоньше, значит простые операции выполнит быстрее (это вообще одна из самых скоростных БД), с другой стороны, в отличии от фаерберда его негде настраивать, а тот же размер блока может ускорить некоторые вещи. Вообще без структуры данных и типовых запросов вы врядли получите объективные ответы.
Для ускорения вычитки я бы подумал о pinvoke API вместо стандартных провайдеров. Поэтому стоит еще сравнить API.