|
|
|
Как лучше реализовать (прошу помощи)
|
|||
|---|---|---|---|
|
#18+
Приветствую всех участников форума Задача: реализовать систему, формирующую карту сайта, учитывающую вложенность страниц. Остановился на вопросе, как лучше спроектировать бд Для отдельно взятого сайта это легко представляется в виде матрицы \\\ a \ b \ c \ d a\ 0 \ 1 \ 1 \ 1 b\ 1 \ 0 \ 1 \ 1 c\ 0 \ 0 \ 0 \ 1 d\ 1 \ 0 \ 1 \ 0 шапки строк -страницы имеющие ссылки шапки колонок -страницы на которые ссылаются По первой строке можно сказать, что страница "a" содержит ссылки на "b","c","d". По второй -что страница "b" имеет ссылки на "a","c","d" и т.д. Таких сайтов в базе будет множество. Собственно вопрос стоит в выборе субд и в проектировании бд. Вот то как реализовал бы это я (изображение таблиц в приложенном файле) Несколько настораживают размеры таблицы связей страниц. Берём сайт на 1000 страниц, предположим, что на каждой странице в среднем по 30 ссылок на другие страницы этого сайта. Таким образом получаем, что на один сайт с тысячью страниц в таблицу связей запишется 30к записей. Вскоре таких сайтов образуется 1000, а потом 2000 (а это уже десятки миллионов строк). Как вы думаете стоит ли так проектировать бд, как на изображении? Эта таблица хоть и всего с двумя атрибутами будет расти достаточно быстро и работа с этой таблицей будет вестись достаточно активно, то есть надо будет производить выборки для того чтобы определить вложенность страниц того или иного сайта. Быть может есть ещё какие то варианты хранения. И ещё один моментик -порекомендуйте пожалуйста СУБД для этого дела. Желательно бесплатную. Сам выбрал бы MySQL, потому как её знаю лучше других, но быть может для таких целей есть и более оптимальные варианты Прошу прощения, если расписал что-то не очень понятно. Просто раньше ничего сложного проектировать не приходилось. И пишу вероятно, как дилетант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2009, 22:21 |
|
||
|
Как лучше реализовать (прошу помощи)
|
|||
|---|---|---|---|
|
#18+
а по этой огромной табличке будут только выборки? инсертов не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 13:49 |
|
||
|
Как лучше реализовать (прошу помощи)
|
|||
|---|---|---|---|
|
#18+
vinger4, Insert-ы будут. Как только просканирован новый сайт, то (1) домен заносится в а Таблицу Сайтов (2) все его страницы заносятся в Таблицу Ссылок (3) все связи между страницами заносятся в Таблицу Связей то есть проссканировав сайт на 1000 страниц в таблицу связей может войти 30000 записей. в-принципе таблицу связей как и таблицу ссылок можно будет периодисески чистить, потому как информация в них во первых будет естественным образом устаревать(сайты развиваются) и во-вторых если карта определённого сайта открывалась последний раз довольно-таки давно, то возможно и хранить информацию о ней без надобности, так как она попросту не востребована. То есть очищать эти 2 таблицы в принципе можно. но всё равно это не панацея. даже за месяц может скопиться информация о нескольких десятках тысяч сайтов, а это может вылиться в 300 миллионов строк в таблице связей (если брать сайт в среднем по 1000 страниц и с 30-ю ссылками на каждой) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2009, 15:49 |
|
||
|
Как лучше реализовать (прошу помощи)
|
|||
|---|---|---|---|
|
#18+
Ну чтож никто не может помочь ? Неужели такой сложный вопрос я задал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2009, 17:11 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35834424&tid=1543406]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 207ms |
| total: | 498ms |

| 0 / 0 |
