Pergunta

eu estava criando uma tabela no SQL Server CE e percebeu que não suporta varchar.

Olhando para isso, descobri que "colunas de texto não-Unicode (varchar, char, texto) e smallmoney não são suportados, embora nvarchar, nchar, ntext, e dinheiro são suportados", como demonstrados pelo MSDN .

Isso é verdade? Por que é isso, exatamente? Parece que um compacto do banco de dados que suporta tipos de dados que take menos bytes para armazenar ... Eu estou supondo que é preciso mais espaço para guardar os caracteres Unicode.

Qual é o raciocínio por trás disso?

Foi útil?

Solução

É provavelmente porque o Windows CE é completamente Unicode base e tudo isso de cordas são armazenados dessa forma.

Outras dicas

Eu acho que eles estavam tentando reduzir sua pegada de implantação e simplificar a interface. Isso e, provavelmente, tentando evitar ter que implantar mais versões das DLLs (unicode vs versões não-unicode).

E sim, é verdade que eles só suportam Unicode.

Mas isso não significa que automaticamente leva 2 bytes para armazenar. É possível codificar que na camada de base de dados para tira, basicamente, o primeiro byte quando ele não é necessário. Muitos motores de banco de dados fazer isso como um meio de compressão sobre Unicode.

Significa apenas que quaisquer entradas que utilizam o conjunto de dois byte tem uma ligeira sobrecarga de um marcador adicional dizer o motor que a sequência está a utilizar dois bytes. Caso contrário, um único byte ainda podem ser armazenados no disco, e expandida como uma parte do RowData ler.

A maioria dos bancos de dados compactos utilize sempre uma forma de compressão RunLength quando eles realmente colocar bytes no disco, a fim de economizar espaço. O formato acontecer de você vê-lo em quando ele sai do motor raramente coincide com o que está realmente armazenado no disco.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top