Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Сжать данные в таблице  [new]
user87
Member

Откуда:
Сообщений: 257
Добрый день.

Подскажите, пожалуйста.

загружаю текстовый файл, который весит 8 МБ

Создал две таблицы
CREATE TABLE dbo.T1
(
c2 nvarchar(max)
)
WITH (DATA_COMPRESSION = ROW);
go
CREATE TABLE dbo.T12
(
c2 nvarchar(max)
)
WITH (DATA_COMPRESSION = PAGE);
go

В две эти таблицы вставлю данные

BULK INSERT AdventureWorks2012.dbo.T1
FROM 'C:\test\u_extend244054.log';
GO

BULK INSERT AdventureWorks2012.dbo.T12
FROM 'C:\test\u_extend244054.log';
GO
Далее смотрю

sp_spaceused 'T1'
GO
sp_spaceused 'T12'
После того как эти процедуры отработаои, в колонке data вижу, чилсо 17800 КБ, что собственно равняется 18... МБ

Подскажите, пожалуйста, почему данные не сжимаются, вроде как при создании табоицы, указал compression

Заранее спасибо
17 окт 13, 13:04    [14984988]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
user87
После того как эти процедуры отработаои, в колонке data вижу, чилсо 17800 КБ, что собственно равняется 18... МБ
exec sp_spaceused @objname = 'dbo.T1'
exec sp_spaceused @objname = 'dbo.T2'
17 окт 13, 13:10    [14985049]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
А кто сказал что должны ?
[url=http://technet.microsoft.com/ru-ru/library/cc280574.aspx ]sp_estimate_data_compression_savings[/url] что показывает ?
17 окт 13, 13:11    [14985061]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
BOL->Unicode Compression Implementation

...
nvarchar(max) data is never compressed even if it is stored in row.
17 окт 13, 13:11    [14985062]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
user87
загружаю текстовый файл, который весит 8 МБ
8 килобайт - в юникоде или в однобайтовой кодировке?
В nvarchar потребуется 2 байта на символ.
17 окт 13, 13:12    [14985066]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
user87
Member

Откуда:
Сообщений: 257
Попробовал пересоздать таблицы с типом varchar(max) результат 9144 KB

Есть ли в sql server 2012 возможность сжимать данные , имею ввиду как программа zip сжимает файлы, чтобы у меня так же сжимались данные в таблице.

Т.е сделаю процедуру, которая будет вытягивать из файлов данные, в среднем файлы по 8 мб, т.е по моим расчетам в месяц будет 350 гб данных загужаться ну и т.д

Собственно из-за этого и хотел как-то сжимать данные, наподобие программы zip
17 окт 13, 13:20    [14985131]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
user87,

А зачем хранить в реляционной СУБД данные в виде байтов?!
17 окт 13, 13:22    [14985139]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
user87
Собственно из-за этого и хотел как-то сжимать данные, наподобие программы zip

Ну так сжимайте ваши файлы zip-ом. И храните в FILESTREAM.
17 окт 13, 13:22    [14985143]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
user87
Member

Откуда:
Сообщений: 257
pkarklin, так я буду хранить данные в varchar(max) поле, после чего буду к ней обращаться по запросам

Glory, насчет FILESTREM делал изначально, но скорее всего я чего-то не понял, так как поле, должно быть varbinary для FILESTREAM

Т.е как потом, мне к ним писать селекты, честно никогда не работал с FILESTREAM

Извините, если плохо объяснил
17 окт 13, 13:26    [14985163]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
user87
pkarklin, так я буду хранить данные в varchar(max) поле, после чего буду к ней обращаться по запросам


И каким образом Вы будете "к ней обращаться по запросам"?
17 окт 13, 13:27    [14985173]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
user87
Glory, насчет FILESTREM делал изначально, но скорее всего я чего-то не понял, так как поле, должно быть varbinary для FILESTREAM

А что такое есть сжатый zip-ом файл, как не бинарная последовательность ?
17 окт 13, 13:29    [14985192]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
user87
Member

Откуда:
Сообщений: 257
Для себя вижу, следующее начальство говорит дату, когда произошла ошибка, ищу по like '%exeption%'

Select * from Log where Data = '' and text like '%exeption%'
17 окт 13, 13:30    [14985195]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
user87
Для себя вижу, следующее начальство говорит дату, когда произошла ошибка, ищу по like '%exeption%'

Т.е. вы хотите фоновое сжатие/распоковку текстовых файлов что ли ?
17 окт 13, 13:31    [14985208]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
user87
Для себя вижу, следующее начальство говорит дату, когда произошла ошибка, ищу по like '%exeption%'

Select * from Log where Data = '' and text like '%exeption%'


И где у Вас в таблице полz Data и Exception?

Тут не нужна реляционная СУБД. Встроенных средства сжатия, поиска и индексации ОС будет достаточно. Так же достаточным могут быть стандартные парсеры логов.

Вот когда Вы будете загружать логи в специально спроектированную структуру, пусть хоть из одной таблицы, тогда, возможно, понадобится СУБД.

Сообщение было отредактировано: 17 окт 13, 13:33
17 окт 13, 13:32    [14985212]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
user87
Member

Откуда:
Сообщений: 257
Правильно ли я понимаю логику FILESTREAM

У меня есть таблица с полями даты и бинарного когда

Автоматически вызывается процедура, которая смотрит на компьютер, на котором лежит файл, загружает его в таблицу

Одна запись Дата Бинарная последовательность.


Если я правильно понимаю, то тогда как мне, если попросят, вытащить данные из таблицы
17 окт 13, 13:33    [14985229]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
user87
Member

Откуда:
Сообщений: 257
pkarklin , я понимаю, что этого будет достаточно, но сказали сделать, значит надо((
17 окт 13, 13:34    [14985234]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
user87
pkarklin , я понимаю, что этого будет достаточно, но сказали сделать, значит надо((


Чего сказали, запихать лог в блоб, чтоб потом умереть на

автор
месяц будет 350 гб данных загужаться


при поиске по LIKE '%%'?!
17 окт 13, 13:36    [14985243]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
user87
но сказали сделать, значит надо

Т.е начальство так сказало
ни в коем случае не используй нормальные формы, грузи все логи в blob поля одной таблицы
17 окт 13, 13:36    [14985246]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
Гость333
Member

Откуда:
Сообщений: 3683
user87
pkarklin , я понимаю, что этого будет достаточно, но сказали сделать, значит надо((

Лучше озвучьте поставленную задачу максимально близко к оригиналу. Если есть переписка — процитируйте.
17 окт 13, 13:41    [14985262]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
user87
Member

Откуда:
Сообщений: 257
Glory , pkarklin
Ну вот собственно и вопрос, как быть в данной ситуации, подскажите, плиз
17 окт 13, 13:41    [14985264]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
1. От чего это логи;
2. Что с ними надо делать еще, кроме LIKE '%%'?
17 окт 13, 13:43    [14985274]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
user87
Member

Откуда:
Сообщений: 257
логи IIS, кроме поиска ничего не надо
17 окт 13, 13:44    [14985280]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
Glory
Member

Откуда:
Сообщений: 104760
user87
как быть в данной ситуации

- Взять бумагу и карандаш
- Составить перечень требований
- Составить перечень входных данных
- Спроектировать схему данных
- Выбрать инструменты реализации
- Составить ТехЗадание
- Начать писать код
17 окт 13, 13:45    [14985286]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
user87,

Логи так и хранить в файл. Log parser download
17 окт 13, 13:45    [14985287]     Ответить | Цитировать Сообщить модератору
 Re: Сжать данные в таблице  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Как использовать: http://support.microsoft.com/kb/910447/en
17 окт 13, 13:47    [14985300]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить