хранение данных (индексов) 2

4F
На сайте с 25.04.2005
Offline
20
4LF
1089

вот недавно слышал что google работает без БД... точнее на файлах (грубо говоря).

у меня есть мысля = но она требует Вашей критики..

так вот если для каждого слова (или корня) создавать папку и в ней файлы = url + позиция слова... не опухнет ли ФС от такого

и еще = у googl'a вроде есть демон, который отвечает на запросы пользователей.. (сама поисковая часть) так вот он вроде держит всё проиндексированное в оперативе (типа большого массиво структур :D)

а если оператива и swap закончились = что он делает?

[Удален]
#1

Если именно так делать - ФС опухнет разумеется. :)

У Гугля оператива и swap вряд ли заканчивается. У них вообще-то кластер большой, и индекс распределен по ОП серверов-участников.

4F
На сайте с 25.04.2005
Offline
20
4LF
#2

а мне вот говорили что у googl'a поиска как такового нет = они как то строят результат на стадии индексирования

lagif
На сайте с 15.12.2004
Offline
30
#3

4LF,

Кто вам такое говорит?

Попросите того человека рассказать как такое возможно...

запросы - они разные бывают... :)

Это тоже пройдет...
4F
На сайте с 25.04.2005
Offline
20
4LF
#4

я тоже так думаю...

посоветуйте как лучше хранить инфу для быстрой выборки... БД мне кажется не очень сюда идет (типа mysql pgsql)

[Удален]
#5

4LF, хранить в виде Б+-деревьев. Для этого спец. программа есть, berkeley db называется. К ней в любом современном языке есть интерфейс.

4F
На сайте с 25.04.2005
Offline
20
4LF
#6

так решусь поднять тему...

грубо говоря структура индеса:

слово (в НФ) -> список страниц (возможно указание позиции и форма слово = число падежь...)

поэтому %hash слов (каждое слово сожержит указатель на начало массива/списка страниц)...

дальше не могу представить как хранить эти массивы страниц...

-была мысль в хэше слов хранить сериализованный (ну как в php = массив2строка) массив страниц. Но это выходит что строки эти будут измеряться метрами (допустим в словаре будет 300 000 слов * 2М ~ 300ГБ). В принципе 300ГБ на raid массиве это не проблема.

Но меня волнует скорость индексирования = извлечь массив, deserialize, вставить индекс страницы, serialize, обновить значение хэша (а если еще и сжатие строки применять...)

-еще можно в памяти индексатора держать хэш слов (у каждого слова уникальный word_id) и хэш страниц (тоже page_id) и составлять тоже типа хэша (имя элемента word_id, значения page_id, и потом word_pos... ) но проблема в том что и хэш слов и страниц пополняется (хэш слов не так быстро, а вот хэш страниц...), тогда придется делать индексатор демоном (а у меня сейчас crawler запускает indexer при каждой новой страничке)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий