Потеря производительности JSON в базе данных Sql Server

В настоящее время я храню JSON в своей базе данных как VARCHAR(max) который содержит некоторые преобразования. Один из наших специалистов просит сохранить исходный файл JSON, из которого он был преобразован.

Я боюсь, что если я добавлю еще один столбец JSON, это приведет к увеличению размера страницы и уменьшению времени доступа. С другой стороны, эта таблица не будет очень большой (максимум около 100 строк с каждым столбцом JSON, занимающим 4-6 Кбайт), и к ней можно обращаться до 4 или 5 раз в минуту.

Я скупой привратник, беспощадно ругающий наши технологии, или хитрый архитектор, поддерживающий масштабируемость системы?

Кроме того, мне интересно узнать о (относительно) новом типе filestream/BLOB. Из того, что я прочитал, я чувствую, что большие двоичные объекты хранятся в каком-то отдельном месте, так что реляционные запросы вообще не замедляются. Поможет ли переключение varchar на файловый поток?

2 ответа

Решение

Обычно BLOB является предпочтительным для объектов, которые хранятся, в среднем, больше, чем 1 МБ.

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

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

Ваш вариант использования не выглядит слишком востребованным. 4-6KB и менее 100 или даже 1000 строк в этом отношении все еще довольно легки. Хотя я знаю, что ожидаемый вариант использования почти никогда не заканчивается фактическим использованием. Если люди используют таблицу для других целей, кроме поля JSON, вы, возможно, не захотите, чтобы они возвращали JSON из-за потенциального размера и ненужного раздувания.

Хорошо, что в SQL есть и другие, менее сложные варианты, которые могут нам помочь. https://msdn.microsoft.com/en-us/library/ms173530(v=sql.100).aspx

Я бы посоветовал взглянуть на параметр таблицы "Типы с большими значениями вне строки", так как он совместим с будущим, а параметр "текст в строке" не рекомендуется. По сути, эти опции хранят эти большие текстовые поля вне основной страницы, позволяя правильным данным жить там, где они нужны, и дополнительным STUFF, чтобы иметь другой дом.

Другие вопросы по тегам