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

В SQL Server имеется много типов данных, которые могут применяться для различных типов LOB-хранилищ, но выбор правильного типа для LOB-хранилища может оказаться очень сложным, если вы вообще захотите хранить большие объекты в самой базе данных. Многие администраторы баз данных предпочитают хранить большие объекты вне баз данных. Основное правило такое: наилучшая производительность при работе с LOB-объектами размером менее 256 Кбайт достигается при их хранении в базе данных, с объектами размером более 1 Мбайт — вне БД.

Хранение LOB-объектов вне базы данных дает выигрыш в производительности, но также создает риски, так как отсутствует встроенный механизм обеспечения целостности данных. Чтобы помочь найти оптимальный способ хранения LOB-данных, необходимо понять различия между типами данных LOB в SQL Server.

1. TEXT. Данный тип используется для текстовых данных переменной длины без поддержки Unicode, такой тип не может служить для хранения двоичных данных. Тип данных TEXT поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Тип TEXT использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.

2. NTEXT. Используется для текстовых данных переменной длины с поддержкой Unicode; как и TEXT, этот тип не поддерживает двоичные данные. Тип NTEXT поддерживает данные размером до 1 Гбайт (2^30–1,1073741823). Тип NTEXT использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.

3. IMAGE. Используется для двоичных данных переменной длины; тип данных IMAGE — традиционный тип LOB-хранилищ для SQL Server, в котором можно хранить как текстовые, так и двоичные данные. Тип IMAGE поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Этот тип данных использовать не рекомендуется, но он еще присутствует в SQL Server 2008 R2.

4. VARCHAR (MAX). Используется для текстовых данных переменной длины без поддержки Unicode. Тип VARCHAR (MAX) поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Этот тип данных появился в SQL Server 2005 и является рекомендуемым к использованию.

5. NVARCHAR (MAX). Используется для текстовых данных переменной длины с поддержкой Unicode; тип NVARCHAR (MAX) поддерживает данные размером до 1 Гбайт (2^30–1,1073741823). Этот тип данных появился в SQL Server 2005 и является рекомендуемым к использованию.

6. FILESTREAM. Тип данных FILESTREAM сочетает производительность доступа к LOB-объектам напрямую через файловую систему NTFS с целостностью и прямым доступом через механизм реляционных баз данных SQL Server. Он может использоваться как для двоичных, так и для текстовых данных и поддерживает файлы величиной вплоть до размера дискового тома. Использование типа FILESTREAM разрешается путем комбинирования настроек SQL Server и соответствующей базы данных и типа данных VARBINARY (MAX). Тип данных FILESTREAM появился в SQL Server 2008 и является рекомендуемым к использованию. Дополнительную информацию об этом типе данных можно найти в статье «Using SQL Server 2008’s FILESTREAM Data Type» по адресу http://www.sqlmag.com/article/tsql3/using-sql-server-2008-s-filestream-data-type.aspx).

7. XML. Используется для хранения данных в формате XML. Тип XML также можно использовать как тип для хранения больших объемов данных. Он поддерживает данные размером до 2 Гбайт (2^31–1,2147483647). Тип данных XML появился в SQL Server 2005 и является рекомендуемым к использованию.

8. VARBINARY. Тип данных VARBINARY, строго говоря, не является типом для хранения больших объектов, так как его размер ограничен 8000 байт. Его можно задействовать для хранения небольших объемов двоичных данных.

Майкл Оти (motey@windowsitpro.com) — технический директор Windows IT Pro и SQL Server Magazine, автор Microsoft SQL Server 2008 New Features (Osborne/McGraw-Hill)