Работа с управлением потоками .NET IO (кодирование и хранение в SQL Server) - PullRequest
0 голосов
/ 31 мая 2011

Я хотел бы знать следующее, пожалуйста:

1) Мне нужно, для моего приложения, обрабатывать потоки ввода-вывода. В частности, мне нужно взять файл и разбить его на несколько двоичных фрагментов для отправки по сети. Могу ли я сделать это с помощью .NET API?

2) Мне также нужно где-то сохранить эти фрагменты. Я действительно заинтересован в сохранении фрагментов в базе данных (SQL Server). Предоставляет ли SQL Server специальные типы полей таблицы для сохранения двоичных данных ???

Спасибо

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

1) Мне нужно, для моего приложения, обрабатывать потоки ввода-вывода.В частности, мне нужно взять файл и разбить его на несколько двоичных фрагментов для отправки по сети.Могу ли я сделать это с помощью .NET API?

Да.

2) Мне также нужно где-то сохранить эти фрагменты.Я действительно заинтересован в сохранении фрагментов в базе данных (SQL Server).Предоставляет ли SQL Server специальные типы полей таблицы для сохранения двоичных данных ???

Да.

1 голос
/ 31 мая 2011

Для двоичных данных в SQL Server (в версии 2005 или новее) используйте тип данных VARBINARY - подробности см. В документах MSDN для двоичных и varbinary .

С типом данных VARBINARY(MAX) вы можете хранить до 2 ГБ двоичных данных в столбце таблицы базы данных.

Как показывает эта действительно хорошая статья Microsoft Research под названием Для блобов или не для блобов , вы также не должны переусердствовать с двоичным хранилищем в SQL Server.

Их вывод после большого количества тестов производительности и анализа таков:

  • если ваши изображения или документ обычно имеют размер менее 256 КБ, хранение их в столбце VARBINARY базы данных более эффективно

  • если ваши изображения или документ обычно имеют размер более 1 МБ, хранение их в файловой системе более эффективно (а с атрибутом FILESTREAM в SQL Server 2008 они все еще находятся под контролем транзакций и являются частью базы данных)

  • в промежутке между этими двумя значениями, в зависимости от вашего использования, это немного

Если вы решите поместить свои изображения в таблицу SQL Server, я настоятельно рекомендую использовать отдельную таблицу для хранения этих изображений - не храните фотографии сотрудников в таблице сотрудников - храните их в отдельной таблице. Таким образом, таблица «Сотрудник» может оставаться скудной, средней и очень эффективной, при условии, что вам не всегда нужно также выбирать фотографии сотрудника в качестве части ваших запросов.

Для файловых групп ознакомьтесь с Файлы и Архитектура файловых групп для вступления. По сути, вы либо создадите базу данных с отдельной файловой группой для больших структур данных с самого начала, либо добавите дополнительную файловую группу позже. Давайте назовем это «LARGE_DATA».

Теперь, когда у вас есть новая таблица для создания, в которой нужно хранить столбцы VARCHAR (MAX) или VARBINARY (MAX), вы можете указать эту группу файлов для больших данных:

 CREATE TABLE dbo.YourTable
     (....... define the fields here ......)
     ON Data                   -- the basic "Data" filegroup for the regular data
     TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data

Проверьте вступление MSDN в файловых группах и поэкспериментируйте с ним!

...