|
|
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
Задача: Придумать структуру БД, в ней будет производиться поиск, сортировка, максимально эффективно и быстро. БД со временем может достигнуть объемов до 100ГБ - 300ГБ. С данной БД будет работать один пользователь, так что нужно именно эффективность и быстрота для одного пользователя, а не для посещаемого сайта. В данный момент придумали такую структуру и алгоритм Оптимизации базы для быстрого поиска: (добавление данных не обязательно должно быть быстро, по гигабайту данных в сутки, максимальное время добавления до 7 часов, а вот поиск и сортировка быстрей, ну хотя бы чтоб на один запрос уходило не более 1 - 5 минут) Таблица в 5 полей. id, uid, url, code, post_date id = Уникальный кей записи uid = Специальный айдишник того, кто урл добавил ulr = сам урл (С него удалено http:// и www.) code = первые три или пять букв урл post_date = время добавления в Unix TIMESTAMP Пример: У нас есть записи: id = цифра любая от 1 до 5 миллиардов (Как минимум) uid = 1234567 ulr = google.com code = goo или googl post_date = 1235399496 т.е. для поиска нам нужно будет сделать следующий поиск: code = googl В теории это получается, что БД будет делать поиск не во всей базе, а только в тех записях, в которых ссылка начинается на нужный нам поиск. Еще нужно учесть, что вывод будет постраничный, т.е. если MySQL или PostgreSQL то LIMIT 0, 50 и т.п. ---------------------------------- 1.Какой максимальный размер MySql будет стабильно работать в этой ситуации? 2.Возможно, может лучше PostgreSQL? или ещё что-то ? (MySQL может быть и потянет 100гб, MyISAM, InnoDB, но нужно оптимальная структура, по офиц. данным MySQL, PostgreSQL вытянут 100ГБ и даже 1ТБ) 3.Такой алгоритм быстрого поиска хороший или есть лучше ?Другая структура? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 15:40 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
Коллега судя по этим пунктам вам совсем не нужна база данных. Вам нужен файл. Больший и толстый. 1. будет работать один пользователь 2. добавление данных не обязательно должно быть быстро 3. Таблица в 5 полей. 4. вывод будет постраничный Всё это можно сделать простым парсером. Не надо никакой базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 16:27 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
файлы не подходят. Все это делаться будет на пхп или накрайни случий Дельфи. Например я создал файл 1 ГБ он парсирлся у меня долго, а если будет 50 гб файл? это будет очень долго. Потом еще сделал струкруту папкой и там файл с данными так теперь не могу удалить эту папку т.к. винда тупо вступор приходит и ни чего не удаляет. И осуществлять поиск намного затруднительней по файлам таких объемов, как по мне!:? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 16:54 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
1) при индексированном поле ulr сомневаюсь в необходимости сокращённого кода в три или пять символов. Здесь, скорее всего, надо проводить эксперименты 2) сомневаюсь насчёт того, что MySQL потянет такие объёмы данных. А вот за Оракл например - точно ручаюсь, что будет работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 16:59 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
Ну по офиц. данным MySQL потянит такие объемы. Только вот какой хард для этого нужен будет, неизвестно. индексирование с FULLTEXT? Просто нужно будет производить поиск, по полю url, типа если начинается ссылка например на google.com то вывести все которые на неё начинаются, как я понимаю для этого нужен FULLTEXT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 17:24 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
BrainForceне могу удалить эту папку т.к. винда тупо вступор приходит и ни чего не удаляет. Коллега - про ВИНДУ Вы ничего не говорили в условии задачи.... Я тут мыслю что у Вас как минимум IBM 1030..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 17:29 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
BrainForce, смените ник на "строитель трехколесных велосипедов". Вагон софта для поиска и индексирования, Вы полагаете, что сможете написать лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 18:14 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
guest_20040621BrainForce, смените ник на "строитель трехколесных велосипедов". Вагон софта для поиска и индексирования, Вы полагаете, что сможете написать лучше? Я так не полагаю. Я хочу использовать БД...а мне советуют на файлах. Наверно вы что-то не поняли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 18:22 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
BrainForceЯ хочу использовать БД...а мне советуют на файлах. Коллега, не ябиднечайте - читайте и изучайте первоисточники... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 18:37 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
> Наверно вы что-то не поняли. Нет, дружище, это Вы чего-то не поняли. Любая структура данных, которую Вы нарисуете, будет заведомо менее эффективной, чем у специализированного софта. Где и как хранить данные - абсолютно фиолетово: плоские файлы, базы данных, удаленные источники etc. Основная часть работы - индексирование содержимого. Так вот структуру данных для индексирования Вы не напишите, даже если очень захотите. Просто потому, что плохо представляете себе суть задачи. Поэтому наименее болезненный путь для Вас - воспользоваться готовым ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 19:17 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Поэтому наименее болезненный путь для Вас - воспользоваться готовым ПО. Например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 19:38 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
> Например Если даже штатными поисковыми системами Вы пользоваться не умеете, о каком проектировании вообще речь? Набрать search+engine в поисковой строке google - это невероятно сложная задача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 21:38 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
Есть ещё и вики - всемирная [энцикло]педия для ответов на {интересные} вопросы. Почитайте и там как и чем отличаются различные поисковики. Коллега и пжст не сердитесь что я Вас отослал подальше от баз данных. Я же объяснил почему. Базы данных созданы как раз для противоположного HE -1. будет работать один пользователь 2. добавление данных не обязательно должно быть быстро 3. Таблица в 5 полей. 4. вывод будет постраничный A + 1. Работает много пользователей 2. Данные вводятся и выводятся быстро 3. В Базе данных много таблиц и в таблицах много полей 4. Вывод в базах обычно матричный (рекордсет) Но бывает и кубический (это если база OLAP) аналитическая. и много ещё чего где реляционные базы выгоднее чем файловая система. И В поисковых движках структуры несколько более сложные. В Общем читайте и учите мат часть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 22:04 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
Скажу как мега эксперт. Телаете БД в виде одного плоского файла (В Бд одна таблица содерщая все данные) И индексируете по всем полям разрезов данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2009, 15:02 |
|
||
|
Вопрос к экспертам
|
|||
|---|---|---|---|
|
#18+
Если посмотреть в направлении оракла, то в предложеном варианте с авторcode = первые три или пять букв урл можно исходную таблицу разбить на партиции (с 10 или 11, не помню, - автоматически). Тогда запрос типа: Код: plaintext Код: plaintext Соответственно, IO будет намного меньше, чем во всех прочих предложенных вариантах: и на прочтение индексов, и на прочтение собственно данных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2009, 07:14 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35834957&tid=1543390]: |
0ms |
get settings: |
5ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 203ms |
| total: | 469ms |

| 0 / 0 |
