Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 368

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Посоветуйте какую СУБД использовать.
Требования:
- Отсутствие необходимости устанавливать какой-либо сервер. Т.е. надо на подобии SQLite. Тягаешь dll и всё.
- Большая скорость обработки БД размером в гигабайты. Но никаких сложных запросов не будет. Будет два поля. Надо будет только прочитать поле по индексу, записать поле по индексу.

zver777 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: zver777 (статус: Посетитель)
Вопрос отправлен: 30 января 2013, 19:59
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 31 января 2013, 14:04; участников в обсуждении: 4.
Amidamaru

Amidamaru (статус: 4-ый класс), 30 января 2013, 21:48 [#1]:

А почему наподобие? Чем плох SQLite?

ps Я ни чем подобным не пользовался, смотри сам:
http://ru.wikipedia.org/wiki/Встраиваемая_СУБД
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
zver777

zver777 (статус: Посетитель), 30 января 2013, 22:06 [#2]:

Ну я пробовал SQLite. Добавление 100 записей происходит секунд 10. Это крайне медленно.
Amidamaru

Amidamaru (статус: 4-ый класс), 30 января 2013, 22:19 [#3]:

Ну.. по описанию могу предложить попробовать:
ElevateDB
Oracle Berkeley DB
Приглашаю Вас на наш IRC-канал: #delphiintru в сети DalNet.
zver777

zver777 (статус: Посетитель), 30 января 2013, 22:22 [#4]:

Чуть подправил код.
Теперь с помощью SQLite 1 000 000 записей за 34 секунды добавляет.
Но хотелось бы ещё быстрее.
ANBsoft

ANBsoft (статус: Студент), 30 января 2013, 22:59 [#5]:

Можно предложить Firebird Embedded.
При этом не совсем понятно чем не устраивает скорость миллион записей за 34 сек - это весьма неплохой результат.
Кроме того Вам необходимо определиться что требуется от базы.
Если судить по вопросу, то предполагается база из одной таблицы с двумя полями, одно из которых индексное. Вопрос, сколько всего записей должно быть в такой таблице чтобы она занимала гигабайты (если не забивать ее BLOB-данными).
Если речь идет о сотнях миллионов записей, то нужно планировать режим работы, так как в таком случае даже поддержание индекса при вставках/удалениях) будет весьма затратно по времени.
По сути, Вы врядли получите заметно большее быстродействие в других серверах, так как клент-серверные базы тратят много времени на обеспечение "клиент-серверности".
Не знаю какую Вы решаете задачу, возможно Вам подойдет просто отображение файла в память, тогда скорость работы будет упираться в скорость процессора, памяти и диска.
zver777

zver777 (статус: Посетитель), 30 января 2013, 23:22 [#6]:

Проблема в том, что файл в ОП не помещается.
Работа просто со строками.
Но если хранить в txt, не загружая в память, то нельзя ведь просто так получить доступ к примеру миллионой строке файла.
Думал с помощью БД как-то разрулить это, но как получается не поможет.
ANBsoft

ANBsoft (статус: Студент), 30 января 2013, 23:49 [#7]:

Неважно сколько памяти, Windows сам разрулит, просто чем больше памяти - тем быстрее будет работать.
Почитайте что-то вроде Отображение файла в память
Если исходить из постоянной длины строки (накладно по памяти, но быстро по скорости), то доступ к любому элементу будет очень быстрый.
Вадим К

Вадим К (статус: Академик), 31 января 2013, 14:04 [#8]:

Добавить записи быстрее можно, если
- завернуть в транзакцию.
- на время сильного обновления отключить обновления индексов, а потом снова включить. Будет сильно быстрее.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:42
Выполнено за 0.02 сек.