Web programming: Indexed tar files

Mar 05, 2008 16:52

.
Большинство веб-программистов, когда речь заходит о хранении данных для вебсайта, автоматически вводят базу данных. Это - тренированная реакция, как у собаки Павлова, тиражированная в миллионах экземпляров по всему миру, и она не проходит через мыслительные фильтры.
Действительно, если на секунду задуматься, не удивительно ли:

Leave a comment

mejedi March 5 2008, 18:46:29 UTC
Базы дают concurrency и durability (ACID). Как эти проблемы предлагается решать в вашем подходе?

Reply

dph March 5 2008, 18:54:43 UTC
Базы еще и производительность дают, кроме ACID.
На получении по индексу 3 килобайтного блоба (аналогично указанному примеру) уйдет где-то 20 миллисекунд для первых миллионов записей.
И зачем нужен tar?

БД проигрывает ФС при отдаче больших объемов данных, так как не поддерживает некоторые системные фенечки для этого, но схема с tar точно так же ничего такого не поддерживает, поэтому быстрее точно не будет.
Брр, 0.2 секунды на запрос, ужас какой.

Reply

Нет, у вас в голове смешались разные вещи mejedi March 5 2008, 18:59:44 UTC
На получении по индексу 3 килобайтного блоба (аналогично указанному примеру) уйдет где-то 20 миллисекунд

НЕТ поиск по подстрочке не обеспечит ни один индекс. Для использования индекса надо знать ТОЧНОЕ ЗНАЧЕНИЕ поискового термина.

Если я не помню (типичный сценарий) точного написания имени пользователя ЖЖ, но помню подстрочку "мнямня_алекс" ?

Любая база данных в таком случае будет просто сканировать столбец, применяя к нему те же самые регэкспы.

Reply

Re: Нет, у вас в голове смешались разные вещи gds March 5 2008, 19:23:00 UTC
> Для использования индекса надо знать ТОЧНОЕ ЗНАЧЕНИЕ поискового термина.
Онаним, Вы сильно ошибаетесь. Посмотрите на запросы вида " .. LIKE 'qwerty%'" в нормальных базах данных (хотя бы в oracle).

Reply

и еще бывают цивилизованные страны mejedi March 5 2008, 19:34:27 UTC
Hint: подстрочка может встречаться не только в начале строки.

Вы НЕ ПОНИМАЕТЕ, что делает программа, и относитесь к БД как пейзанин к грому с молниями - это Бог на небе едет в колеснице.

Вы не знаете как устроены индексы, и подменяете знание отсылом к "нормальным базам данных" (эквиваленту "цивилизованной страны" из газеты).

Reply

Re: и еще бывают цивилизованные страны antilamer March 5 2008, 20:15:47 UTC
А еще бывают суффиксные деревья, позволяющие искать по подстроке в любом месте за линейное относительно длины запроса время.

Reply

бывают mejedi March 6 2008, 04:12:33 UTC
The large amount of information in each edge and node makes the suffix tree very expensive, consuming about ten to twenty times the memory size of the source text in good implementations. The suffix array reduces this requirement to a factor of four, and researchers have continued to find smaller indexing structures.

Reply

Дейтабейз коан mejedi March 5 2008, 19:36:50 UTC
.. не говоря о том, что сравнение тар-файла (с которым управляется 200kB программа) с Ораклом меня очень рассмешило

Reply

Re: Нет, у вас в голове смешались разные вещи dph March 5 2008, 20:27:20 UTC
Ну, про "ни один" - это интересный вопрос. Полнотекстовый индекс как раз для этого и создан, вполне стандартная возможность.

А для типичных сценариев есть типичные решения. В любом случае, поиск по индексу - он быстрее поиска по файлу. Да и регэкспы обычно не использует - ситуация, где конечный пользователь вводит регэкспы - достаточно редкая.

Для 30 000 элементов в индексе - скорее всего те же 20-30 миллисекунд (завтра поставлю эксперимент, поищу какую-нибудь табличку поменьше).

Да, кстати, в ЖЖ такой возможности я что-то не нашел :) Только поиск по точному имени, да и тот тормозит.

Если же нужно искать по всем текстам сайта - то тут уже нужно смотреть в сторону очень специальных решений ;)

Я к чему - предложенное решение практически всегда уступает или БД или специальным поисковым решениям - тогда зачем оно нужно?

Reply

Re: Нет, у вас в голове смешались разные вещи muzyka_sfer March 5 2008, 22:00:11 UTC
все так, все так. "Пафос моего выступления", однако, против бездумного впихивания "архтектуры LAMP" даже там, где легко обойтись подручными средствами - ценой строк 20-30 кода.

Более того, в моем примере создан текстовый каталог содержимого ТАРа. Никто не мешает из него сляпать (опять-таки стандартными utilities, поставляемыми с ОС) и реальный индекс. Одна команда из еще строк 5 - 10 от силы - скрипта.

Reply

Re: Нет, у вас в голове смешались разные вещи mejedi March 6 2008, 10:42:41 UTC
Э, а какой business value у такого решения?
Вместо стандартного, масштабируемого, дешевого в разработке и поддержке решения предлагается нестандартное, немасштабируемое, дорогое в разработке и в поддержке, да еще и медленное решение.

В чем смысл?

Кстати, если внимательно подсчитать, то уже далеко не 20-30 строчек, 20-30 строчек ушло только на поиск по ключу (одна строчка в любой БД), а есть еще задачи добавления данных, создания бэкапов, оптимизации, аудита, контроля производительности и т.д.

Т.е. для личной страницы автора - пойдет, каждый выбирает себе сложности сам. Для коммерческого использования - нафиг надо.

Reply

Re: Нет, у вас в голове смешались разные вещи dph March 6 2008, 10:50:56 UTC
Предыдущий пост - мой.

Reply

Re: Нет, у вас в голове смешались разные вещи exceeder March 7 2008, 15:39:17 UTC
Я без проблем комбинирую Lucene c MySQL для одних проектов, и MySQL MATCH в других (http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html). MS SQL и Oracle тоже уже отлично это поддерживают. И то и то имеет свои плюсы и минусы, но скорость, транзакционность и возможнсти там все ж поболее, чем в тар-е. К примеру, Люсен хорошо поддерживает фонетический поиск и индексацию.

Reply

Сколько человек могут читать один файл? mejedi March 5 2008, 18:55:41 UTC
Это read-only scenario. Сколько, по-вашему, человек могут одновременно читать один файл?

Reply

Re: Сколько человек могут читать один файл? mejedi March 5 2008, 19:08:50 UTC
Если подход только для rdonly, сравнение с базами некорректно.

Reply

Re: Сколько человек могут читать один файл? muzyka_sfer March 5 2008, 19:10:41 UTC
Более чем корректно, ибо ro составляют львиную долю их реального применения.
Избавиться от тяжелого груза в самом частом случае - что может быть лучше?

Reply


Leave a comment

Up