powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Sqlite и сжатие
11 сообщений из 11, страница 1 из 1
Sqlite и сжатие
    #40130806
tkzv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть база sqlite3, в которой ~150M однообразных текстовых строк (для определённости, URLов и сообщений libmagic), 50-200 знаков длиной. Будет больше. Стало интересно, даст ли какое-то преимущество использование сжимающих расширений. Вроде, таких было немало. Поискал — сплошь платные или совсем сырые. И не понял, как их включать из Питона.

Вопросы:
Что сейчас доступно?
Как подключать? (Для определённости, самый тяжёлый случай: Python 3.8 на Андроиде в Termux с неработающим обновлением, отдельный пакет sqlite не установлен.)
Как оно работает? В моём случае, наверное, было бы оптимально сжимать отдельно каждую строку, но с общим словарём на весь столбец или даже группу столбцов в нескольких таблицах.
Будут ли преимущества? Например, заметное ускорение поиска, либо заметное уменьшение объёма при неизменной скорости.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40130820
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как понимаю там около 1.5 Гб база.
Зачем это сжимать? Нынче 4 Гб памяти только-только хватает браузеру.
Диски нынче все быстрее и быстрее. А процы почти замерли в росте производительности, а сжимать/расжимать это нагрузка на проц, т.е. только тормознее будет работать.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40130826
tkzv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Диски нынче все быстрее и быстрее.

Но всё сетевее и удалённее.

Dima T
А процы почти замерли в росте производительности

Поэтому число ядер стало расти, как раньше мегагерцы.

Dima T
Зачем это сжимать?

Из спортивного интереса.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40130842
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tkzv
Dima T
А процы почти замерли в росте производительности

Поэтому число ядер стало расти, как раньше мегагерцы.

А толку? Поставь на машину 8 колес - она быстрее не поедет. Алгоритмы однопоточные и жать будет одно ядро.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40130885
tkzv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
tkzv
пропущено...

Поэтому число ядер стало расти, как раньше мегагерцы.

А толку? Поставь на машину 8 колес - она быстрее не поедет. Алгоритмы однопоточные и жать будет одно ядро.
А всё, не связанное с чтением из базы, будет продолжать работать.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40130923
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tkzv
Dima T
пропущено...

А толку? Поставь на машину 8 колес - она быстрее не поедет. Алгоритмы однопоточные и жать будет одно ядро.
А всё, не связанное с чтением из базы, будет продолжать работать.
И?
Какая разница что там будет происходить с тем что не связано с чтением из базы???

Вообще, для случаев вроде твоего, есть более-менее стандартное решение.
Разбиваешь свои однообразные строки на куски. Например URL можно с легкостью бить на: протокол, доменное имя, путь до скрипта, параметры скрипта. И раскидываешь их по словарным таблицам.
В общем типичная нормализация, надо только увидеть в "текстовых строках" потенциальные таблицы.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40130983
tkzv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

Вообще, для случаев вроде твоего, есть более-менее стандартное решение.
Разбиваешь свои однообразные строки на куски. Например URL можно с легкостью бить на: протокол, доменное имя, путь до скрипта, параметры скрипта. И раскидываешь их по словарным таблицам.
В общем типичная нормализация, надо только увидеть в "текстовых строках" потенциальные таблицы.


Помимо URL там есть и другие строки. Например, то, что выдаёт libmagic:
'GIF image data, version 87a, 10 x 10',
'data',
'ASCII text, with CRLF line terminators',
'ASCII text, with no line terminators',
'ASCII text, with CR line terminators',
'Zip archive data, at least v2.0 to extract'
'ASCII text',
'UTF-8 Unicode text, with CRLF line terminators',
'Zip archive data, at least v2.0 to extract',
'Non-ISO extended-ASCII text, with CRLF line terminators',
'GIF image data, version 89a, 14 x 16',

Предлагаешь прокрутить в голове алгоритм Хаффмана и реализовать его через таблицы вместо дерева? :)
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40130989
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО отдельно каждую строчку жать - будет проблема с хранением словаря, на строке до 200 байт он банально съест всю экономию.

Думаю можно только сжать всю БД целиком - это надо какие-то встроенные средства ОС задействовать, типа сжатых папок виндавса.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40131014
tkzv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
ИМХО отдельно каждую строчку жать - будет проблема с хранением словаря, на строке до 200 байт он банально съест всю экономию.

Думаю можно только сжать всю БД целиком - это надо какие-то встроенные средства ОС задействовать, типа сжатых папок виндавса.


Поэтому я и спросил. Наверняка ведь, кому-то неоднократно бывало нужно сжать много недлинных стрингов. Например, общим на весь столбец словарём.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40131030
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tkzv
Помимо URL там есть и другие строки. Например, то, что выдаёт libmagic:
'GIF image data, version 87a, 10 x 10',
'data',
'ASCII text, with CRLF line terminators',
'ASCII text, with no line terminators',
'ASCII text, with CR line terminators',
'Zip archive data, at least v2.0 to extract'
'ASCII text',
'UTF-8 Unicode text, with CRLF line terminators',
'Zip archive data, at least v2.0 to extract',
'Non-ISO extended-ASCII text, with CRLF line terminators',
'GIF image data, version 89a, 14 x 16',

Предлагаешь прокрутить в голове алгоритм Хаффмана и реализовать его через таблицы вместо дерева? :)Ну до Хаффмана это далеко не дотягивает.
У тебя же много именно таких стандартизированных строк. Разве что описания картинок различаются. Так что все это можно ужать в один словарь. А в главной таблице останется одно поле ссылающееся на него и вторичное поле для размера картинок.
...
Рейтинг: 0 / 0
Sqlite и сжатие
    #40131038
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tkzv
Dima T
ИМХО отдельно каждую строчку жать - будет проблема с хранением словаря, на строке до 200 байт он банально съест всю экономию.

Думаю можно только сжать всю БД целиком - это надо какие-то встроенные средства ОС задействовать, типа сжатых папок виндавса.


Поэтому я и спросил. Наверняка ведь, кому-то неоднократно бывало нужно сжать много недлинных стрингов. Например, общим на весь столбец словарём.

Тут тоже нетривиально все, если хранить пожатое общим словарем, то размеры строк уменьшатся, но сломается сортировка т.к. пожатое в другом порядке отсортируется. Для решения этого надо вклиниваться во внутреннюю работу SQLite, как-то хранить пожатое, а сравнивать распакованное.
Задача непростая, поэтому простые и бесплатные решения врядли существуют.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Sqlite и сжатие
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (11): Анонимы (7), CerebroSQL, Bing Bot 2 мин., Yandex Bot 2 мин., Google Bot 9 мин.
x
x
Закрыть


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