[Comm] Re: Еще о локали utf-8 и файле Compose
Денис Смирнов
=?iso-8859-1?q?mithraen_=CE=C1_freesource=2Einfo?=
Чт Янв 29 04:09:47 MSK 2004
On Wed, Jan 28, 2004 at 08:58:15PM +0300, Aleksey Avdeev wrote:
> Критичность зависит от объёма и скорости его роста: для БД
> растущих со скоростью несколько (10, 100 и т. д.) гиг в месяц -
> уже может быть критично.
И это всё текстовые данные? Тогда опаньки, там действительно надо
применять много разных мер по экономии пространства. Но такие задачи
меньшинство, а для большинства эти потери не критичны. А когда критичны,
то уже надо совсем менять принципы хранения, например использовать сжатие
со словарём частоповторяемых образцов, lzo, возможно какой-то набор
эвристик для улучшения сжимаемости текста (типа замены uppercase на
спецсимвол перед буквой, при том после точки этот символ добавляется
исключительно если буква изначально была наоборот маленькая) и много
других средств увеличения эффективности. Речи о выборе между utf-8 и 8-и
битными кодировками там и не идёт -- может оказаться по каким-то причинам
удобнее сформировать даже свою кодировку.
Именно поэтому обсуждать такие решения в контексте реений общего
назначения я считаю бессмысленным.
>>(319371 - 273723) / 273723 * 100 ~= 16% (для gzip -9)
>>(212953 - 205139) / 205139 * 100 ~= 3% (для bzip2 -9)
>>То есть увеличение объёма составит 3% при использование bzip2.
> Согласен. Но в некоторых случаях на ленту льют не сжимая:
> bzip2 -9 длительная и ресурсаёмкая операция, при больших объёмах.
Дело отнюдь не в объёмах, а в скоростя стриммера и процессора. И, в любом
случае, если появляются такие проблемы, то это также неординарная
ситуация.
>>> 3. скорость обработки (в том числе - полнотекстовый поиск)
>> А индексы на что?
> Проиндексировать каждое слово не всегда возможно. + любые
> индексы хороши, когда _заранее_ известно что надо искать.
Ну хоть что-то заранее известно. Или делается полнотекстовый поиск по
сотням гигабайт plain text? Ой мама...
>>> 4. поддержка индексов (объёмы + скорость поиска)
>> Бр-р-р-р-р. Индексирование строк без хэшей?
> Иногда - да: когда двоичные деревья рулят, например. Или
> когда выгодно вытащить данные из индекса, не обращаясь к самой
> таблице. Или когда таблица уже упорядочена.
> На самом деле в каждом случяи надо разбираться особо: смена
> типа индекса иногда меняет скорость доступа в разы. И хеш -
> далеко не всегда оптимальный (они однозначно рулят, когда
> хеш-таблица в память помещается _полностью_).
Причём тут это? В узлах дерева могут быть _строки_, а могут быть _хэши_ от
этих строк. И если используется именно первое, то это будет тормозить
(попарное сравнение строк и 32/64 бит целых чисел, после которых
происходит сравнение срок только если хэши оказались одинаковыми, это
большая разница).
> При больших таблицах (не вмещающихся в _физическую_ память)
> сильно отражается: уменьшение количествы строк на странице БД
> повышает количество дисковых операций. А если учесть, что если
> запрос затрагивает больше некоторого порога строк (10-30% или
> 5%-10%, точнее непомню: давно доку на Oracle не смотрел) то
> выполнение запроса полным перебором таблицы часто _выгодней_
> индексного.
> >И не будет иметь до тех пор, пока объёмы баз данных не станут превышать
> >хотя бы сотню гигабайт (SCSI HDD такого размера, что его стоиомть
> >становится сколь-либо существенной).
> Весьма правильный подход! Просто в разных случаях, разные
> параметры имеют первоочередное значение.
Именно так. Собственно речь идёт о том, что сейчас юникод не имеет никаких
причин, кроме унаследованого софта, чтобы не стать основным средством
(применимым в большинстве практических задач).
--
С уважением, Денис
http://freesource.info
Подробная информация о списке рассылки community