powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопрос к экспертам
16 сообщений из 16, страница 1 из 1
Вопрос к экспертам
    #35834398
BrainForce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача:
Придумать структуру БД, в ней будет производиться поиск, сортировка, максимально эффективно и быстро.
БД со временем может достигнуть объемов до 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.Такой алгоритм быстрого поиска хороший или есть лучше ?Другая структура?
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35834561
Фотография Mr Marmelad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллега судя по этим пунктам вам совсем не нужна база данных. Вам нужен файл. Больший и толстый.
1. будет работать один пользователь
2. добавление данных не обязательно должно быть быстро
3. Таблица в 5 полей.
4. вывод будет постраничный

Всё это можно сделать простым парсером. Не надо никакой базы.
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35834652
BrainForce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
файлы не подходят.
Все это делаться будет на пхп или накрайни случий Дельфи. Например я создал файл 1 ГБ он парсирлся у меня долго, а если будет 50 гб файл? это будет очень долго.
Потом еще сделал струкруту папкой и там файл с данными так теперь не могу удалить эту папку т.к. винда тупо вступор приходит и ни чего не удаляет. И осуществлять поиск намного затруднительней по файлам таких объемов, как по мне!:?
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35834674
vinger4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) при индексированном поле ulr сомневаюсь в необходимости сокращённого кода в три или пять символов. Здесь, скорее всего, надо проводить эксперименты
2) сомневаюсь насчёт того, что MySQL потянет такие объёмы данных. А вот за Оракл например - точно ручаюсь, что будет работать
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35834779
BrainForce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну по офиц. данным MySQL потянит такие объемы. Только вот какой хард для этого нужен будет, неизвестно.

индексирование с FULLTEXT?
Просто нужно будет производить поиск, по полю url, типа если начинается ссылка например на google.com то вывести все которые на неё начинаются, как я понимаю для этого нужен FULLTEXT?
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35834794
Фотография Mr Marmelad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BrainForceне могу удалить эту папку т.к. винда тупо вступор приходит и ни чего не удаляет.

Коллега - про ВИНДУ Вы ничего не говорили в условии задачи.... Я тут мыслю что у Вас как минимум IBM 1030.....
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35834957
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BrainForce, смените ник на "строитель трехколесных велосипедов". Вагон софта для поиска и индексирования, Вы полагаете, что сможете написать лучше?
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35834987
BrainForce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621BrainForce, смените ник на "строитель трехколесных велосипедов". Вагон софта для поиска и индексирования, Вы полагаете, что сможете написать лучше?

Я так не полагаю. Я хочу использовать БД...а мне советуют на файлах.

Наверно вы что-то не поняли.
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35835009
Фотография Mr Marmelad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BrainForceЯ хочу использовать БД...а мне советуют на файлах.

Коллега, не ябиднечайте - читайте и изучайте первоисточники...
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35835091
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Наверно вы что-то не поняли.

Нет, дружище, это Вы чего-то не поняли. Любая структура данных, которую Вы нарисуете, будет заведомо менее эффективной, чем у специализированного софта. Где и как хранить данные - абсолютно фиолетово: плоские файлы, базы данных, удаленные источники etc. Основная часть работы - индексирование содержимого. Так вот структуру данных для индексирования Вы не напишите, даже если очень захотите. Просто потому, что плохо представляете себе суть задачи. Поэтому наименее болезненный путь для Вас - воспользоваться готовым ПО.
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35835119
BrainForce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> Поэтому наименее болезненный путь для Вас - воспользоваться готовым ПО.

Например
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35835222
Фотография Mr Marmelad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BrainForce
Например

Поищите тут Коллега
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35835269
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Например

Если даже штатными поисковыми системами Вы пользоваться не умеете, о каком проектировании вообще речь? Набрать search+engine в поисковой строке google - это невероятно сложная задача?
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35835293
Фотография Mr Marmelad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ещё и вики - всемирная [энцикло]педия для ответов на {интересные} вопросы. Почитайте и там как и чем отличаются различные поисковики.

Коллега и пжст не сердитесь что я Вас отослал подальше от баз данных. Я же объяснил почему. Базы данных созданы как раз для противоположного HE


-1. будет работать один пользователь
2. добавление данных не обязательно должно быть быстро
3. Таблица в 5 полей.
4. вывод будет постраничный



A

+
1. Работает много пользователей
2. Данные вводятся и выводятся быстро
3. В Базе данных много таблиц и в таблицах много полей
4. Вывод в базах обычно матричный (рекордсет) Но бывает и кубический (это если база OLAP) аналитическая.

и много ещё чего где реляционные базы выгоднее чем файловая система. И В поисковых движках структуры несколько более сложные. В Общем читайте и учите мат часть.
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35836812
DmitriyO..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажу как мега эксперт.
Телаете БД в виде одного плоского файла (В Бд одна таблица содерщая все данные)
И индексируете по всем полям разрезов данных.
...
Рейтинг: 0 / 0
Вопрос к экспертам
    #35856947
KOT MATPOCKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если посмотреть в направлении оракла, то в предложеном варианте с авторcode = первые три или пять букв урл можно исходную таблицу разбить на партиции (с 10 или 11, не помню, - автоматически). Тогда запрос типа:
Код: plaintext
SELECT * From T Where CODE = 'googl' AND ulr like 'google.com'
будут выполняться очень быстро, т.к. это будет эквивалентно выполнению запроса
Код: plaintext
SELECT * From T Where ulr like 'google.com'
к таблице, в которой лежат только записи, начинающиеся с 'googl', а таких мало. Ну и индекс еще по url можно добавить...
Соответственно, IO будет намного меньше, чем во всех прочих предложенных вариантах: и на прочтение индексов, и на прочтение собственно данных!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопрос к экспертам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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