Здравствуйте, Sinclair, Вы писали:
S>Если бы у нас не было значений переменного размера (string aka varchar aka ntext),
Туда же NULL даже для числовых полей.
S>то этой ненужной ботвы можно было бы избежать, выставляя в качестве внешнего API сразу внутреннее представление, т.е. структуры.
Но представление NULL-значений различно на разных этапах.
При хранении — вектор бит для всех полей.
При выдаче данных по сети для некоего "рекордсета" — тоже набор бит для всех полей.
При промежуточном оперировании — пара {is-null, value}, т.е. перед отправкой в сеть данные перепаковываются.
На клиенте потом происходит обратная "распаковка" nulllable-полей.
Т.е., если речь о гипотетическом непосредственном взаимодействии с АПИ сервера в одном процессе, то этапы переупаковки хотелось бы минимизировать.