Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 787

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!

Подскажите способы уменьшения размера файла базы данных при использовании компонента ABS (Absolute DataBase)?

В базе в основном только текст (одно поле - bmp image).

Архиватору удаётся сжать его до 5-10% от первоначального размера.

Anton (w) Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Anton (w) (статус: Посетитель)
Вопрос отправлен: 29 июля 2008, 11:42
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, iamantbk!
А что, смущает большой размер? В многих случаях, и 100мб - это так, маленькая база.
Для начала надо оценить, а насколько большой оверхед. тоесть, посчитать, сколько бы занимали данные, если их сохранить в обычный файл.
Потом можно думать об эффективности.

Сохрнанять картинки в базе, а тем более bmp - некрасиво. Так не делают.

Можно попробовать перестроить таблицу. Если одно с полей название города/улицы и есть в столбце как минимум две пары одинаковых записей, то стоит вынести названия в отдельную таблицу. В некоторых случаях это даёт нехилый прирост и скорости, и уменьшение размера, и упрощение работы.

Иногда бывает, что записей в таблице 3-4, а размер базы такой, что вроде бы там сотни записей. Дело в том, что когда запись удаляется, то она не удаляется физически с файла, а просто отмечается как удалённая. Что бы почистить такие записи, у каждого движка БД есть свои методы. часто они называются или vacum (для SQLite) или Pack.

Цитата:

Архиватору удаётся сжать его до 5-10% от первоначального размера.

А пробовали ли вы сжимать например mp3 файл? Нельзя сжать то, что уже сжато. Вполне может быть, что сама БД уже частично пакует данные.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 29 июля 2008, 13:15


Мини-форум вопроса

Всего сообщений: 14; последнее сообщение — 1 августа 2008, 11:38; участников в обсуждении: 3.
Anton (w)

Anton (w) (статус: Посетитель), 30 июля 2008, 03:33 [#1]:

База 100 Мб сжимается примерно до 5 Мб раром.

Паковка после удаления иногда/регулярно выполняется.

Все таблицы нормализованы.

База локальная и небольшая - таскается на флешке, поэтому и хочу уменьшить, а так приходиться архиватор использовать.

BMP - конечно не то, поэтому хочу использовать JPG, но их мало очень относительно всего количества записей и файлы маленькие (до 100 Кб).
Вадим К

Вадим К (статус: Академик), 30 июля 2008, 11:27 [#2]:

100 мб.... я давно не видел флешек на 256мб. как минимум 1Ггб.
Во вторых, непонятно, что за данные. может это вполне нормальный размер. Ради эксперемента можно попробовать перевести эту базу к примеру в аксес или другую БД и посмотреть. Если размер будет приблизительно таким же, тогда забыть об этом и не морочить себе голову.
А вот если размер результирующей таблицы будет хоть в два раза меньше, тогда надо подумать, а может стоит поменять движок БД.

Я никогда не использовал ABS, по этому не могу утверждать, о эффективности хранения данных.
Галочка "подтверждения прочтения" - вселенское зло.
Anton (w)

Anton (w) (статус: Посетитель), 30 июля 2008, 11:45 [#3]:

>>100 мб.... я давно не видел флешек на 256мб. как минимум 1Ггб.

Ну флешка хоть и большая, но она не только же под БД используется.

Другие варианты можно рассмотреть, хотя это и не сильно и критично.

Ещё думал о варианте использования того же архиватора прямо из программы, но если будет сбой в винде или в самой программе, то тогда база останется в распакованном виде. В этом направлении какие мысли у Вас есть? Или не стоит так делать?
Вадим К

Вадим К (статус: Академик), 30 июля 2008, 11:58 [#4]:

я думаю с паковкой лучше не эксперементировать.
А каковы цели, если надо хранить базу на флешке. может есть более простые варианты?
>>Ну флешка хоть и большая, но она не только же под БД используется.
Может съемный USB винт или уже лучше ноут?
Галочка "подтверждения прочтения" - вселенское зло.
Anton (w)

Anton (w) (статус: Посетитель), 30 июля 2008, 12:04 [#5]:

>>А каковы цели, если надо хранить базу на флешке. может есть более простые варианты?

Да просто с собой таскается

>>Может съемный USB винт или уже лучше ноут?
Флешка самое то, остальное уже более громоздко.
Вадим К

Вадим К (статус: Академик), 30 июля 2008, 12:43 [#6]:

Можно две флешки купить.
Такую базу лучше на флешке не носить. Непонятна цель сего "носения"
Галочка "подтверждения прочтения" - вселенское зло.
Anton (w)

Anton (w) (статус: Посетитель), 31 июля 2008, 03:12 [#7]:

>>Такую базу лучше на флешке не носить. Непонятна цель сего "носения"

Почему?
Цель - доступ к адресной книге и не только.
Вадим К

Вадим К (статус: Академик), 31 июля 2008, 11:13 [#8]:

Адресная книга на 100 мб:). мда.
И если такую базу утащат - крайне неприятно.
Во вторых - большая вероятность утерять.
Но это ваши личные проблемы. Если бы ваша флешка попала в мой комп, то содержимое быстренько было бы у меня на винту, а вы ничего и не заподозрили.
Но и это ещё не столь большая проблема. Флешка то скорее всего открыта на запись, значит вирусы к вам будут ходить полным ходом. Примсмотритесь к ней, нет ли в корне файла Autorun.inf. Правда он может быть скрытым.
Галочка "подтверждения прочтения" - вселенское зло.
Anton (w)

Anton (w) (статус: Посетитель), 31 июля 2008, 12:02 [#9]:

Нет, на самом деле там не только "адресная книга", просто там инфа по жителям города (по работе информация).

Про утягивание инфы при втыкании флешки я знаю прекрасно, у самого такое есть :-) Но скопировать это одно, а другое открыть контейнер TrueCrypt-а, узнать пароль на базу и т.д. Ну и в принципе, на совершенно незнакомых компах она не втыкается.

Также прекрасно знаком с вирусами, использующие autorun и т.д.

А как Вы обходите указанные моменты? Хотя это оффтоп уже вроде как :-)
Вадим К

Вадим К (статус: Академик), 31 июля 2008, 12:09 [#10]:

Узнать пароль на базу? да какие проблемы, вы же сами его введёте:)
а иначе вы никак не запустите.
Галочка "подтверждения прочтения" - вселенское зло.
Фамилия Имя Отчество

Фамилия Имя Отчество (статус: Посетитель), 31 июля 2008, 14:03 [#11]:

Если контейнер TrueCrypt-а в несколько гигабайт, а в нём база, то скопировать всё "незаметно" не так уж и просто. Не заметить этого невозможно. Тем более что у многих флешек есть индикатор работы.
Вадим К

Вадим К (статус: Академик), 31 июля 2008, 14:06 [#12]:

вы будете сами смотреть на то, как оно копируется и ничего не скажете:)
Галочка "подтверждения прочтения" - вселенское зло.
Фамилия Имя Отчество

Фамилия Имя Отчество (статус: Посетитель), 1 августа 2008, 01:19 [#13]:

Почему? Замаскировано под проверку антивируса?
Вадим К

Вадим К (статус: Академик), 1 августа 2008, 11:38 [#14]:

приблизительно.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.02 сек.