| 
| 
 | Вопрос # 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]:Добавить записи быстрее можно, если - завернуть в транзакцию.
 - на время сильного обновления отключить обновления индексов, а потом снова включить. Будет сильно быстрее.
 Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |