Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компрессия значений в таблице 
:(
    Опции темы
v2v
Дата 29.6.2011, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 1
Всего: 56



Есть: БД оракл + Джава приложения, которое сохраняет данные, причём одно из полей (одна из колонок в таблице) - это огромный блоб (хмл), занимающий много места. Хочеться уменьшить занимаемое место этой колонкой, не удаляя и не архивируя данные и при этом не изменяя джава приложение (зиповать в джаве хмл и хранить архив в колонке вариант известный, но пока отброшен). 
Лучшим из вариантов было бы реализовать некую прослойку в оракле в виде хранимой процедуры или настраиваемой опции таблици, которая позволила бы сжимать сохраняемый блоб. Подходящий функционал имеется utl_compress пакете, но я пока не представляю как его внедрить без изменений в клиентском приложении.




--------------------
PM   Вверх
turbanoff
Дата 30.6.2011, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 6.4.2009

Репутация: нет
Всего: 1



теоретически есть вариант. с кучей ограничений:

переименовать таблицу и создать view с именем таблицы.
во view-шном select-е распаковывать блоб.
И написать триггер instead of для insert/update, который будет запаковывать.

UPD.
в 11-м есть virtual column. Этот способ скорее всего проще, и с меньшими побочными эффектами
Переименовываем столбец. <<Исходный_с_блобом>> в <<Исходный_с_блобом>>_compress
Добавляем к таблице виртуальный столбец с именем <<Исходный_с_блобом>>, который распаковывает другой столбец.
Ну и вешаем триггер для запаковки


Это сообщение отредактировал(а) turbanoff - 30.6.2011, 11:46
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0843 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.