|
Вопрос # 6 368/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Посоветуйте какую СУБД использовать.
Требования:
- Отсутствие необходимости устанавливать какой-либо сервер. Т.е. надо на подобии SQLite. Тягаешь dll и всё.
- Большая скорость обработки БД размером в гигабайты. Но никаких сложных запросов не будет. Будет два поля. Надо будет только прочитать поле по индексу, записать поле по индексу.
 |
Вопрос задал: zver777 (статус: Посетитель)
Вопрос отправлен: 30 января 2013, 19:59
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 31 января 2013, 14:04; участников в обсуждении: 4.
|
zver777 (статус: Посетитель), 30 января 2013, 22:06 [#2]:
Ну я пробовал SQLite. Добавление 100 записей происходит секунд 10. Это крайне медленно.
|
|
Amidamaru (статус: 4-ый класс), 30 января 2013, 22:19 [#3]:
Ну.. по описанию могу предложить попробовать:
ElevateDB
Oracle Berkeley DB
|
|
zver777 (статус: Посетитель), 30 января 2013, 22:22 [#4]:
Чуть подправил код.
Теперь с помощью SQLite 1 000 000 записей за 34 секунды добавляет.
Но хотелось бы ещё быстрее.
|
|
ANBsoft (статус: Студент), 30 января 2013, 22:59 [#5]:
Можно предложить Firebird Embedded.
При этом не совсем понятно чем не устраивает скорость миллион записей за 34 сек - это весьма неплохой результат.
Кроме того Вам необходимо определиться что требуется от базы.
Если судить по вопросу, то предполагается база из одной таблицы с двумя полями, одно из которых индексное. Вопрос, сколько всего записей должно быть в такой таблице чтобы она занимала гигабайты (если не забивать ее BLOB-данными).
Если речь идет о сотнях миллионов записей, то нужно планировать режим работы, так как в таком случае даже поддержание индекса при вставках/удалениях) будет весьма затратно по времени.
По сути, Вы врядли получите заметно большее быстродействие в других серверах, так как клент-серверные базы тратят много времени на обеспечение "клиент-серверности".
Не знаю какую Вы решаете задачу, возможно Вам подойдет просто отображение файла в память, тогда скорость работы будет упираться в скорость процессора, памяти и диска.
|
|
zver777 (статус: Посетитель), 30 января 2013, 23:22 [#6]:
Проблема в том, что файл в ОП не помещается.
Работа просто со строками.
Но если хранить в txt, не загружая в память, то нельзя ведь просто так получить доступ к примеру миллионой строке файла.
Думал с помощью БД как-то разрулить это, но как получается не поможет.
|
|
ANBsoft (статус: Студент), 30 января 2013, 23:49 [#7]:
Неважно сколько памяти, Windows сам разрулит, просто чем больше памяти - тем быстрее будет работать.
Почитайте что-то вроде Отображение файла в память
Если исходить из постоянной длины строки (накладно по памяти, но быстро по скорости), то доступ к любому элементу будет очень быстрый.
|
|
Вадим К (статус: Академик), 31 января 2013, 14:04 [#8]:
Добавить записи быстрее можно, если
- завернуть в транзакцию.
- на время сильного обновления отключить обновления индексов, а потом снова включить. Будет сильно быстрее.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|