BLOB-данные в огромной базе данных SQL Server - PullRequest
0 голосов
/ 23 июня 2011

У нас есть 20 000 000 сгенерированных текстовых файлов каждый год, средний размер около 250 КБ каждый (35 КБ в архиве).

Мы должны поместить эти файлы в какой-нибудь архив на 10 лет.Нет необходимости искать внутри текстовых файлов, но мы должны быть в состоянии найти один текстовый файл, выполнив поиск по 5-10 полям метаданных, таким как «productname», «creationdate» и т. Д.

Я рассматриваю архивирование каждого файла ихранить их в базе данных SQL Server с 5-10 столбцами с возможностью поиска (индексированными) и столбцом varbinary (MAX) для данных ZIP-файла.

База данных будет расти с годами;5-10 Тб.Поэтому я думаю, что нам нужно разделить данные, например, сохраняя одну базу данных в год.

Я изучал использование FILESTREAM в SQL Server для столбца varbinary, в котором хранятся данные, но, похоже, это больше подходит для больших двоичных объектов> 1 Мб?

Любые другие предложения о том, какуправлять такими объемами данных?

Ответы [ 3 ]

1 голос
/ 23 июня 2011

Файловый поток определенно больше подходит для больших двоичных объектов (750 КБ-1 МБ), поскольку накладные расходы, необходимые для открытия внешнего файла, начинают влиять на производительность чтения и записи по сравнению с vb (max) хранилищем больших двоичных объектов для небольших файлов. Если это не такая большая проблема (т. Е. Чтение данных большого двоичного объекта после первоначальной записи происходит редко, а большие двоичные объекты эффективно неизменяемы), тогда это определенно вариант.

Я бы, вероятно, предложил хранить файлы непосредственно в столбце vb (max), если вы можете гарантировать, что они не станут намного больше по размеру, но храните эту таблицу в отдельной файловой группе, используя опцию TEXTIMAGE_ON, которая позволит вам при необходимости переместите его в другое хранилище из остальных метаданных. Кроме того, убедитесь, что вы спроектировали свою схему таким образом, чтобы фактическое хранилище больших двоичных объектов можно было разделить на несколько файловых групп, используя либо разделы, либо с помощью какой-либо схемы с несколькими таблицами, чтобы в будущем можно было масштабировать их на разные диски.

Хранение больших двоичных объектов, непосредственно связанных с метаданными SQL, либо через Filestream, либо через прямое хранилище vb (max), имеет много преимуществ по сравнению с несоответствиями файловой системы / SQL, не ограничиваясь простотой резервного копирования и другими операциями управления.

1 голос
/ 23 июня 2011

Я бы сказал, что лучше хранить файлы в файловой системе.И вы можете сохранить имя файла и путь в БД.Вот похожий вопрос .

0 голосов
/ 23 июня 2011

Я предполагаю, что под «сгенерированными» вы подразумеваете что-то вроде данных, внедряемых в шаблоны документов, и поэтому существует много повторений текстового содержимого, то есть «шаблон»?год ~ 55 000 в день, ~ 2300 в час!

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

Если вы имеете в виду что-то еще под "сгенерированным", не могли бы вы уточнить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...