Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / посоветуйте db engine и проектирование / 13 сообщений из 13, страница 1 из 1
12.10.2009, 15:47
    #36245943
virtualhead
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
перепробовал уже много разных движков. почти отчаялся и смирился с тем что придется делать свою базу на базе (bdb).
суть задачи такая — я делаю мониторинг доступности разных хостов.
предположим он тестирует какой-то хост каждую минуту на какие-то показатели. и надо хранить все результаты тестов за весь период тестирования. сколько бы лет не было. в результате если тестируемых объектов мало, записей в базе теоретически должно быть не очень много.
но рассчитывают что клиентов будет много. и соответственно стал вопрос в том как хранить все эти результаты тестирования. цифры в миллиардах идут и более. для оптимизации можно использовать то что не нужно делать выборки по всему объему данных, а нужны только срезы за день , час и т.д. вопрос такой — умеет ли какая либо база по какому-то критерию разбивать таблицы на блоки. Пример: я запрашиваю у базы — а дай информацию по хосту ya.ru за 2009.10.10 23.00 - 23.15 и она считывает их из псевдотаблицы hour_ya.ru_2009.10.10_23.00.tbl, нужно отчет за день — запрашиваю из псевдотаблицы day_ya.ru_2009.10.10.tbl, и ответ от базы приходит мгновенно а не через 20 минут.
То есть фактически производительность движка ограничивается объемом диска и скоростью чтения с него а не количество процов (так как не надо по огромным индексам бегать).
Есть ли база с таким расширением и как она называется база и расширение ?

если что не правильно объяснил, поправьте попробую подробней описать.
...
Рейтинг: 0 / 0
12.10.2009, 16:09
    #36246017
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
virtualheadперепробовал уже много разных движков
начни с уточнения этого пункта
практически каждый опытный программист (в практически любой СУБД) укажет, тебе что ты не прав...

Сам могу сказать по IDB Informix Dynamic Server: и с "fragmenting by expression" и без него (просто с индексами) вполне тебя удовлетворит (предупреждаю - за бабки)...
...
Рейтинг: 0 / 0
12.10.2009, 16:21
    #36246045
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
virtualhead,

Из обсуждаемых на этом форуме РСУБД подойдет почти любая, за исключением, наверное, SQLite и Access.
Построить систему хорошо - это надо уметь независимо от СУБД. А построить плохо можно и на самой крутой.
...
Рейтинг: 0 / 0
12.10.2009, 16:26
    #36246058
virtualhead
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
ну дело именно в том что объемы большие, не миллионы а миллиарды
т.е. при тестирование 80к хостов за год будет 42.854.400.000
и если по всё это держать в одной таблице и строить индекс то врядли все это будет быстро работать
...
Рейтинг: 0 / 0
12.10.2009, 16:40
    #36246106
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
virtualheadну дело именно в том что объемы большие, не миллионы а миллиарды
т.е. при тестирование 80к хостов за год будет 42.854.400.000
и если по всё это держать в одной таблице и строить индекс то врядли все это будет быстро работатьПочему вы так думаете? Есть и другие способы оптимизации работы БД помимо "строить индекс".
...
Рейтинг: 0 / 0
12.10.2009, 16:41
    #36246109
virtualhead
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
miksoft,

фишка в том чтобы база сама разбивала на таблицы и сама где искать
...
Рейтинг: 0 / 0
12.10.2009, 16:45
    #36246116
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
virtualheadmiksoft,

фишка в том чтобы база сама разбивала на таблицы и сама где искатьИ этим способы оптимизации тоже не ограничиваются.
В вашем случае значительно эффективнее будет не секционирование, которого вы непонятно зачем домогаетесь, а предрассчитанные агрегаты.
...
Рейтинг: 0 / 0
12.10.2009, 17:11
    #36246187
virtualhead
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
miksoft,

как по английскому называется этот термин который вы указали "предрассчитанные агрегаты"?
и еще, есть необходимость не только в репортах за час,день и месяц но и в самих данных поминутно.
так же решение должно быть экономным, ставить новый сервер из-за того что скорость работы движка меньше скорости прямого чтения с диска — не позволительно
...
Рейтинг: 0 / 0
12.10.2009, 17:16
    #36246213
virtualhead
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
АнатоЛойСам могу сказать по IDB Informix Dynamic Server: и с "fragmenting by expression" и без него (просто с индексами) вполне тебя удовлетворит (предупреждаю - за бабки)...
посмотрел fragmenting — оно не умеет само фрагменты создавать, надо задавать условие.
т.е. нельзя сделать типа услвоие кратность какому-то числу.
insert into table$(ceil(time/86400))
вот вроде такого
...
Рейтинг: 0 / 0
12.10.2009, 17:25
    #36246245
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
virtualheadкак по английскому называется этот термин который вы указали "предрассчитанные агрегаты"?Даже не знаю, а зачем вам?
Это общий принцип, вряд ли вы его найдете в доке по конкретной СУБД.
Заключается, грубо говоря, в том, чтобы в отдельной табличке хранить результат запроса вида SELECT список_полей, список_агрегатных_выражений FROM table GROUP BY список_полей и регулярно ее пополнять. Можно содержать несколько таблиц, агрегированных по разным признакам и/или с разным шагом.
virtualheadтак же решение должно быть экономным, ставить новый сервер из-за того что скорость работы движка меньше скорости прямого чтения с диска — не позволительноЭто требование ни о чем не говорит, ибо практически у всех СУБД (за исключением in-memory) производительность ограничивается (помимо кривых рук разработчика) именно дисковым вводом/выводом.
...
Рейтинг: 0 / 0
12.10.2009, 17:48
    #36246313
virtualhead
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
miksoftДаже не знаю, а зачем вам?
Это общий принцип, вряд ли вы его найдете в доке по конкретной СУБД.

я пробовал гуглить по этому термину и ничего не нашел :(

miksoft
Это требование ни о чем не говорит, ибо практически у всех СУБД (за исключением in-memory) производительность ограничивается (помимо кривых рук разработчика) именно дисковым вводом/выводом.

ок, пример. вот таблица для MySQL

create table logs (
time datetime not null,
id bigint,
value bigint,
index(time,id)
) ;
в неё вставляется хtera записей и делается запрос вида select * from logs where id = 666 and time between '2009-09-01 22:00:00' and '2009-09-01 23:45:00'; в ответ за скажем 100 мс должен прийти ответ...


у меня нет опыта работы с такими объемами и я не уверен что простая база данных выдержит это... вот поэтому и мудрю

я не прав ? и движок одинакого быстро работает с любыми объемами данных в условиях если я на запрошу срез за месяц а буду запрашивать срезы за период не более нескольки часов ( в данном примере 105 записей ) ?
...
Рейтинг: 0 / 0
12.10.2009, 18:32
    #36246429
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
virtualheadmiksoftДаже не знаю, а зачем вам?
Это общий принцип, вряд ли вы его найдете в доке по конкретной СУБД.

я пробовал гуглить по этому термину и ничего не нашел :(Ну это несколько жаргонный термин. Из синонимов в Яндексе наибольшее количество страниц дает фраза "предварительное агрегирование".
virtualheadок, пример. вот таблица для MySQL

Код: plaintext
1.
2.
3.
4.
5.
6.
create table logs (
        time datetime not null,
        id bigint,
        value bigint,
        index(time,id)
) ;
в неё вставляется хtera записей и делается запрос вида select * from logs where id = 666 and time between '2009-09-01 22:00:00' and '2009-09-01 23:45:00'; в ответ за скажем 100 мс должен прийти ответ...Сделайте индекс (id, time) и, вполне возможно, нормальное быстродействие будет достигнуто вообще без каких-либо дополнительных действий. Если индекс влезает (вдруг :) ) в оперативную память, то будет еще лучше.
virtualheadу меня нет опыта работы с такими объемами и я не уверен что простая база данных выдержит это... вот поэтому и мудрю

я не прав ? и движок одинакого быстро работает с любыми объемами данных в условиях если я на запрошу срез за месяц а буду запрашивать срезы за период не более нескольки часов ( в данном примере 105 записей ) ?У правильно построенной БД с ростом объема данных время выполнения запросов растет далеко не линейно, а примерно как O(log(N)), т.е. значительно медленнее.
...
Рейтинг: 0 / 0
13.10.2009, 10:02
    #36247127
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
посоветуйте db engine и проектирование
virtualheadАнатоЛойСам могу сказать по IDB Informix Dynamic Server: и с "fragmenting by expression" и без него (просто с индексами) вполне тебя удовлетворит (предупреждаю - за бабки)...
посмотрел fragmenting — оно не умеет само фрагменты создавать, надо задавать условие.
т.е. нельзя сделать типа услвоие кратность какому-то числу.
insert into table$(ceil(time/86400))
вот вроде такого

Хороший программист - тот, кто умеет эффективно использовать навязанные правила игры...
Эх, если бы на все чихи существовало ПО, которое "само" всё умеет...
В программе отследить что появилась дата в новом месяце (вобщем новый ключ для очередного фрагмента) и сделать САМОМУ слабо? а-ля:

IBM Informix Dynamic Server (IDS), Version 11.50 Guide to SQL: Syntax
Код: plaintext
1.
2.
ALTER FRAGMENT ON TABLE news 
   ADD PARTITION century3 (c1 >=  200  AND c1 <  300 ) IN dbsp2;


A la guerre comme a la guerre, как говорят французы, или по нашему "в лагере приходиться следовать распорядку дня, но сгущёнку под одеялом никто не отменял!" (с)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / посоветуйте db engine и проектирование / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]