Из базуки по мухам?
От: Russ  
Дата: 21.08.03 06:54
Оценка:
Привет всем,

есть некий std::set (в нем тесктовые строки) который в ходе выполнения программы разростается до колоссальных размеров.. причем, в момент когда физическая память кончается, машина начинает сильно тормозить.

Есть желание писать эти строки в базу данных.

Посоветуйте пожалуйста — какую технологию выбрать? Наиболее критичный параметр — скорость работы, система используется одним юзером.

Хотя нутром чуствую, что это слишком "круто". Есть желание сделать просто набор текстовх файлов, например с именам aa, ab, ac и т.д. и записывать строки в эти файлы и потом просто их просматривать. Вообщем, как сделать так что бы это работало максимально быстро?

Заранее спасибо,
Руслан.
Re: Из базуки по мухам?
От: Ведмедь Россия  
Дата: 21.08.03 07:05
Оценка:
Здравствуйте, Russ, Вы писали:

R>Привет всем,


R>есть некий std::set (в нем тесктовые строки) который в ходе выполнения программы разростается до колоссальных размеров.. причем, в момент когда физическая память кончается, машина начинает сильно тормозить.


R>Есть желание писать эти строки в базу данных.


R>Посоветуйте пожалуйста — какую технологию выбрать? Наиболее критичный параметр — скорость работы, система используется одним юзером.


R>Хотя нутром чуствую, что это слишком "круто". Есть желание сделать просто набор текстовх файлов, например с именам aa, ab, ac и т.д. и записывать строки в эти файлы и потом просто их просматривать. Вообщем, как сделать так что бы это работало максимально быстро?


R>Заранее спасибо,

R>Руслан.


А дык может поставить простую БД и хранить строки там? Какие еще ограничения есть? ( количество строк, необходимые опреации с ними, для чего эти строки используются )
Да пребудет с тобой Великий Джа
Re[2]: Из базуки по мухам?
От: Russ  
Дата: 21.08.03 07:12
Оценка:
Здравствуйте, Ведмедь, Вы писали:
R>>есть некий std::set (в нем тесктовые строки) который в ходе выполнения программы разростается до колоссальных размеров.. причем, в момент когда физическая память кончается, машина начинает сильно тормозить.

В>А дык может поставить простую БД и хранить строки там? Какие еще ограничения есть? ( количество строк, необходимые опреации с ними, для чего эти строки используются )


количество строк: от 50 000-100 000 в в 30% случаев и до 1 000 000 и далее к бесконечности в остальных.
строки — это линки на страницы (URLs)

А что ты понимаешь под словом "простая БД"... я с БД не работал никогда и не знаю всех этих тонкостей... а при наличии большого количества технологии которые предлагает майкрософт, я просто не знаю с чего начать и про что читать.. В MSDN написано что если надо performance то надо пользовать OLE DB но у меня уж очень простая БД, без каких либо связей.

Спасибо заранее,
Руслан.
Re[3]: Из базуки по мухам?
От: Ведмедь Россия  
Дата: 21.08.03 07:18
Оценка: 2 (1)
Здравствуйте, Russ, Вы писали:

R>Здравствуйте, Ведмедь, Вы писали:

R>>>есть некий std::set (в нем тесктовые строки) который в ходе выполнения программы разростается до колоссальных размеров.. причем, в момент когда физическая память кончается, машина начинает сильно тормозить.

В>>А дык может поставить простую БД и хранить строки там? Какие еще ограничения есть? ( количество строк, необходимые опреации с ними, для чего эти строки используются )


R>количество строк: от 50 000-100 000 в в 30% случаев и до 1 000 000 и далее к бесконечности в остальных.

R>строки — это линки на страницы (URLs)

R>А что ты понимаешь под словом "простая БД"... я с БД не работал никогда и не знаю всех этих тонкостей... а при наличии большого количества технологии которые предлагает майкрософт, я просто не знаю с чего начать и про что читать.. В MSDN написано что если надо performance то надо пользовать OLE DB но у меня уж очень простая БД, без каких либо связей.


R>Спасибо заранее,

R>Руслан.

Возми для такого аксесовскую базу или MSDE, я думаю все будет вполне шустро.
А то получается что надо изобретать велосипед, когда можно воспользоваться готовым решением.
ЗЫ: НАдо же когда то начинать и с базами работать
Да пребудет с тобой Великий Джа
Re[4]: Из базуки по мухам?
От: Russ  
Дата: 21.08.03 07:23
Оценка:
Здравствуйте, Ведмедь, Вы писали:
В>Возми для такого аксесовскую базу или MSDE, я думаю все будет вполне шустро.
В>А то получается что надо изобретать велосипед, когда можно воспользоваться готовым решением.
В>ЗЫ: НАдо же когда то начинать и с базами работать

Ок, спасибо! Я думаю у каждого бывает момент в жизни
когда надо "начинать и с базами работать".
Видимо пришел и мой час
Re[3]: Из базуки по мухам?
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 21.08.03 07:39
Оценка:
Здравствуйте, Russ, Вы писали:


В>>А дык может поставить простую БД и хранить строки там? Какие еще ограничения есть? ( количество строк, необходимые опреации с ними, для чего эти строки используются )

R>количество строк: от 50 000-100 000 в в 30% случаев и до 1 000 000 и далее к бесконечности в остальных.
R>...я с БД не работал никогда...
Возможно, если тебе не надо часто обновлять записи(строке) и сортировать — то вариант хранения в вайлах подойдет. Если это не так — прийдется учить, как работать с базами данных. А ОЛЕ ДБ использовать, или другую технологию — все равно в данном случае(ИМНО)
... << RSDN@Home 1.1 beta 1 >>
King Oleg
*Читайте DOC'и, они rules*
Re[4]: Из базуки по мухам?
От: Russ  
Дата: 21.08.03 07:43
Оценка:
Здравствуйте, King Oleg, Вы писали:
KO>Возможно, если тебе не надо часто обновлять записи(строке) и сортировать — то вариант хранения в вайлах подойдет. Если это не так — прийдется учить, как работать с базами данных. А ОЛЕ ДБ использовать, или другую технологию — все равно в данном случае(ИМНО)

Вообщем уточнение:

в этой базе хранятся линки на страницы, которые уже были "в работе". То есть программа перед тем как приступить к распарсиванию очередного линка. Это сделано чтобы не попасть в цикл и не делать лишней работы.

Заранее спасибо,
Руслан
Re[4]: Из базуки по мухам?
От: Admiral Украина  
Дата: 21.08.03 10:23
Оценка:
Здравствуйте, Ведмедь, Вы писали:

R>>количество строк: от 50 000-100 000 в в 30% случаев и до 1 000 000 и далее к бесконечности в остальных.


В>Возми для такого аксесовскую базу или MSDE, я думаю все будет вполне шустро.


Наверное, лучше сразу MSDE. Объем данных намечается вроде немаленький.
Re[5]: Из базуки по мухам?
От: Russ  
Дата: 21.08.03 11:00
Оценка:
Здравствуйте, Admiral, Вы писали:
R>>>количество строк: от 50 000-100 000 в в 30% случаев и до 1 000 000 и далее к бесконечности в остальных.
В>>Возми для такого аксесовскую базу или MSDE, я думаю все будет вполне шустро.
A>Наверное, лучше сразу MSDE. Объем данных намечается вроде немаленький.

Я думаю (ИМХО, конечно) это слишком круто, поскольку мне еще надо такой сетап
создать чтобы программа без проблем ставилась на компах конечных пользователей.
Насколько я понимаю MSJET почти у всех стоит по умолчанию. Или я не прав?
Re: Из базуки по мухам?
От: Widget  
Дата: 21.08.03 11:22
Оценка: 2 (1)
Здравствуйте, Russю

http://sleepycat.com/products/data.shtml

Может поможет. Сам не пользовался , но много слышал.
Я так понимаю это хранилище типа stl-евской map'ы, но что мешает превпатить ее в set.
... << RSDN@Home 1.1 beta 1 >>
Re: Из базуки по мухам?
От: _Obelisk_ Россия http://www.ibm.com
Дата: 21.08.03 12:50
Оценка: +1
Здравствуйте, Russ, Вы писали:

R>Привет всем,


R>есть некий std::set (в нем тесктовые строки) который в ходе выполнения программы разростается до колоссальных размеров.. причем, в момент когда физическая память кончается, машина начинает сильно тормозить.



Может быть другую структуру данных использовать для хранения.
Можно ведь учитывать повторяющиюся информацию, скажем есть адреса
www.foo.com
www.foo.com/A
www.foo.com/A/B
www.foo.com/A/С
www.foo.com/A/С/A


тогда мы можем использовать дерево со след структурой
                            www
                               foo
                                   com
                                       A
                                     B   C
                                           A


Помимо этого можно хэшировать строки, и хранить в узлах не сами строки, а указатели на них.
Тогда в вышеприведенном примере, мы будем иметь лишь одну копию "А".



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[2]: Из базуки по мухам?
От: Russ  
Дата: 21.08.03 15:49
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

> Может быть другую структуру данных использовать для хранения.



Я сначала думал что юзьвери не будут вообще жаловаться
на то что у них виртуальная память кончается,
но они (как это обычно и бывает) превзошли все мои
ожидания оставляя мою прогу работать сутками..

поэтому даже самая оптимальная структура данных
упирается в наличие свободной памяти в системе..
Re[3]: Из базуки по мухам?
От: _Obelisk_ Россия http://www.ibm.com
Дата: 22.08.03 07:10
Оценка: 2 (1)
Здравствуйте, Russ, Вы писали:

R>Здравствуйте, _Obelisk_, Вы писали:


>> Может быть другую структуру данных использовать для хранения.



R>поэтому даже самая оптимальная структура данных

R>упирается в наличие свободной памяти в системе..

Тем не менее, лучше использовать более оптимальные структуры данных и если потребуется,
то их и хранить в БД (винт у компа тоже не безграничный)



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[4]: Из базуки по мухам?
От: Russ  
Дата: 22.08.03 07:21
Оценка:
Здравствуйте, _Obelisk_, Вы писали:
_O_>Тем не менее, лучше использовать более оптимальные структуры данных и если потребуется,
_O_>то их и хранить в БД (винт у компа тоже не безграничный)

согласен правда, на данный момент, я храню md5 этих строк, поскольку они мне сами не нужны и я просто проверяю были ли они отработаны ранее или нет.
Re[2]: Из базуки по мухам?
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 22.08.03 14:07
Оценка:
Здравствуйте, Widget, Вы писали:

W>http://sleepycat.com/products/data.shtml


Нужно брать BDB 1.85 (1994 год) — она бесплатная совсем. Но многопоточность по записи ей не привить без больших переделок, а вот по чтению — нормально. Пользуюсь.

Более поздние версии BDB стоит брать только в том случае, если продукт распространятеся как OpenSource, либо не распространяется вообще (там есть определение, что считается распространением).

Алгоритм, понятно, BTREE. Поддержка ключей переменной длины есть.
Алексей Кирдин
Re[6]: Из базуки по мухам?
От: WolfHound  
Дата: 23.08.03 07:02
Оценка:
Здравствуйте, Russ, Вы писали:

R>Я думаю (ИМХО, конечно) это слишком круто, поскольку мне еще надо такой сетап

R> создать чтобы программа без проблем ставилась на компах конечных пользователей.
R>Насколько я понимаю MSJET почти у всех стоит по умолчанию. Или я не прав?
Надо тестировать. На моих задачах(правда у меня запросы не тривиальные)акцесс оказался в 15-100 раз медленней.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.