|
Вопрос # 1 787/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Подскажите способы уменьшения размера файла базы данных при использовании компонента ABS (Absolute DataBase)?
В базе в основном только текст (одно поле - bmp image).
Архиватору удаётся сжать его до 5-10% от первоначального размера.
 |
Вопрос задал: 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) (статус: Посетитель), 30 июля 2008, 03:33 [#1]:
База 100 Мб сжимается примерно до 5 Мб раром.
Паковка после удаления иногда/регулярно выполняется.
Все таблицы нормализованы.
База локальная и небольшая - таскается на флешке, поэтому и хочу уменьшить, а так приходиться архиватор использовать.
BMP - конечно не то, поэтому хочу использовать JPG, но их мало очень относительно всего количества записей и файлы маленькие (до 100 Кб).
|
|
Вадим К (статус: Академик), 30 июля 2008, 11:27 [#2]:
100 мб.... я давно не видел флешек на 256мб. как минимум 1Ггб.
Во вторых, непонятно, что за данные. может это вполне нормальный размер. Ради эксперемента можно попробовать перевести эту базу к примеру в аксес или другую БД и посмотреть. Если размер будет приблизительно таким же, тогда забыть об этом и не морочить себе голову.
А вот если размер результирующей таблицы будет хоть в два раза меньше, тогда надо подумать, а может стоит поменять движок БД.
Я никогда не использовал ABS, по этому не могу утверждать, о эффективности хранения данных.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Anton (w) (статус: Посетитель), 30 июля 2008, 11:45 [#3]:
>>100 мб.... я давно не видел флешек на 256мб. как минимум 1Ггб.
Ну флешка хоть и большая, но она не только же под БД используется.
Другие варианты можно рассмотреть, хотя это и не сильно и критично.
Ещё думал о варианте использования того же архиватора прямо из программы, но если будет сбой в винде или в самой программе, то тогда база останется в распакованном виде. В этом направлении какие мысли у Вас есть? Или не стоит так делать?
|
|
Вадим К (статус: Академик), 30 июля 2008, 11:58 [#4]:
я думаю с паковкой лучше не эксперементировать.
А каковы цели, если надо хранить базу на флешке. может есть более простые варианты?
>>Ну флешка хоть и большая, но она не только же под БД используется.
Может съемный USB винт или уже лучше ноут?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Anton (w) (статус: Посетитель), 30 июля 2008, 12:04 [#5]:
>>А каковы цели, если надо хранить базу на флешке. может есть более простые варианты?
Да просто с собой таскается
>>Может съемный USB винт или уже лучше ноут?
Флешка самое то, остальное уже более громоздко.
|
|
Вадим К (статус: Академик), 30 июля 2008, 12:43 [#6]:
Можно две флешки купить.
Такую базу лучше на флешке не носить. Непонятна цель сего "носения"
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Anton (w) (статус: Посетитель), 31 июля 2008, 03:12 [#7]:
>>Такую базу лучше на флешке не носить. Непонятна цель сего "носения"
Почему?
Цель - доступ к адресной книге и не только.
|
|
Вадим К (статус: Академик), 31 июля 2008, 11:13 [#8]:
Адресная книга на 100 мб . мда.
И если такую базу утащат - крайне неприятно.
Во вторых - большая вероятность утерять.
Но это ваши личные проблемы. Если бы ваша флешка попала в мой комп, то содержимое быстренько было бы у меня на винту, а вы ничего и не заподозрили.
Но и это ещё не столь большая проблема. Флешка то скорее всего открыта на запись, значит вирусы к вам будут ходить полным ходом. Примсмотритесь к ней, нет ли в корне файла Autorun.inf. Правда он может быть скрытым.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Вадим К (статус: Академик), 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]:
приблизительно.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|