2009-02-23 26 views
16

Ich erstellte eine Tabelle in SQL Server CE und erkannte, dass es Varchar nicht unterstützt.Warum unterstützt SQL Server CE nicht Varchar?

Nachschlagen, fand ich, dass "Nicht-Unicode-Textspalten (Varchar, Char, Text) und Smallmoney nicht unterstützt werden, obwohl Nvarchar, Nchar, Ntext und Geld unterstützt werden" wie stated at MSDN.

Ist das wahr? Warum ist das genau? Es scheint, dass eine kompakte Datenbank würde Datentypen unterstützen, die weniger Bytes zu speichern ... Ich nehme an, es nimmt mehr Platz zum Speichern der Unicode-Zeichen.

Was ist der Grund dafür?

Antwort

11

Es ist wahrscheinlich, weil Windows CE vollständig Unicode-basiert ist und alle seine Zeichenfolgen auf diese Weise gespeichert werden.

10

Ich denke, sie haben versucht, ihre Bereitstellung Fußabdruck zu reduzieren und die Schnittstelle zu vereinfachen. Dies und wahrscheinlich versuchen zu vermeiden, mehr Versionen der DLLs (Unicode vs Nicht-Unicode-Versionen) bereitstellen zu müssen.

Und ja, es stimmt, dass sie nur Unicode unterstützen.

Aber das bedeutet nicht automatisch, dass es 2 Bytes zum Speichern benötigt. Sie können dies auf der Datenbankebene verschlüsseln, um das erste Byte im Grunde zu entfernen, wenn es nicht benötigt wird. Viele Datenbank-Engines tun dies als Mittel zur Komprimierung von Unicode.

Es bedeutet nur, dass alle Einträge, die den Satz mit zwei Bytes verwenden, einen leichten Overhead eines zusätzlichen Markers haben, der der Engine mitteilt, dass die Sequenz zwei Bytes verwendet. Andernfalls kann ein einzelnes Byte immer noch auf dem Datenträger gespeichert und als Teil des RowData-Lesevorgangs erweitert werden.

Die meisten kompakten Datenbanken verwenden immer eine Form der Lauflängenkomprimierung, wenn sie tatsächlich Bytes auf die Festplatte schreiben, um Platz zu sparen. Das Format, in dem Sie es sehen, wenn es aus der Engine kommt, entspricht kaum dem, was tatsächlich auf der Festplatte gespeichert ist.

+0

Große Antwort. Ich war neugierig (aber nicht wirklich besorgt), wie es mich körperlich gespeichert hat. – enorl76

Verwandte Themen