Это вопрос "лучшей практики". У нас есть внутренние дискуссии по этой теме и мы хотим получить информацию от более широкой аудитории.
Мне нужно сохранить свои данные в традиционной таблице MS SQL Server
с обычными столбцами и строками. Иногда мне нужно вернуть DataTable
в мое веб-приложение, а иногда мне нужно вернуть строку JSON
.
В настоящее время я возвращаю таблицу на средний уровень и анализирую ее в строку JSON
. Похоже, что это работает хорошо по большей части, но иногда занимает некоторое время на больших наборах данных (разбор данных, а не возврат таблицы).
Я рассматриваю возможность пересмотра хранимых процедур для выборочного возврата строки DataTable
или JSON
. Я бы просто добавил параметр @isJson bit
в SP.
Если пользователю нужна строка вместо таблицы, SP выполнит такой запрос:
DECLARE @result varchar(MAX)
SELECT @result = COALESCE(@results ',', '') + '{id:"' + colId + '",name:"' + colName + '"}'
FROM MyTable
SELECT @result
Это вызывает следующее:
{id:"1342",name:"row1"},{id:"3424",name:"row2"}
Конечно, пользователь может также получить таблицу, передав false параметру @isJson.
Я хочу быть ясным, что на хранение данных не влияет, ни на какие-либо существующие представления и другие процессы. Это изменение ТОЛЬКО результатов некоторых хранимых процедур.
Мои вопросы:
- Кто-нибудь пробовал это в большом приложении? Если да, каков был результат?
- Какие проблемы вы видели/ожидаете ли вы с помощью этого подхода?
- Есть ли более быстрый способ перейти от таблицы к JSON в SQL Server, кроме изменения хранимой процедуры таким образом или разбора строки в среднем уровне?