EDB Data Types and Size Limits
9/8/2008
EDB foi projetado para suporte muitos dos recursos do CEDB tanto Microsoft SQL Server 2005 Compact Edition. Portanto, edb dá suporte a mais tipos dados que CDEB, mas também possui alguns limites tamanho não impostos pelo CEDB.
Tipos de dados com suporte
A seguinte tabela mostra os tipos de dados com suporte por Edb.
Tipo de dados | Descrição |
---|---|
CEVT_BLOB |
Uma estrutura blob. |
CEVT_BOOL |
Um Boolean valor. |
CEVT_FILETIME |
Uma estrutura FILETIME. |
CEVT_I2 |
Um 16-bit número inteiro assinado. |
CEVT_I4 |
Um 32-bit número inteiro assinado. |
CEVT_LPWSTR |
Um seqüência de caracteres NULL-Terminated. |
CEVT_R8 |
Um 64-bit flutuante. |
CEVT_UI2 |
Um 16-bit inteiro sem assinatura. |
CEVT_UI4 |
Um 32-bit inteiro sem assinatura. |
CEVT_STREAM |
Somente Edb. Um binário grande transmitir de dados. |
CEVT_RECID |
Somente Edb. Um 128-bit GUID que identifica exclusivamente um registro. |
CEVT_AUTO_I4 |
EDB apenas um 32 gerado automaticamente-bit número inteiro assinado. |
CEVT_AUTO_I8 |
Somente Edb. Um 64 gerado-autt-número inteiro assinado bit. |
CEVT_STREAM
CEVT_STREAM Armazena maior itens dados, como imagens ou email anexos. Dados de fluxo são armazenados no seu próprio conjunto de páginas dados no banco de dados, não em um registro. CEVT_STREAM Armazena até 256 bytes em um registro. Depois que 256 bytes são usados, os dados transmitir é automaticamente armazenado fora de registro.
Portanto, embora edb limita o tamanho máximo de registro para 8 KB, o tamanho máximo de um transmitir não é afetado por esse limite. No entanto, limitado a 32 é MB, que é metade o tamanho máximo de um volume.
Usando CEVT_STREAM
Considere o seguinte ao trabalhar com CEVT_STREAM:
- CEVT_STREAM Requer mais sobrecarga que outros tipos dados. Porque a maioria dos dados transmitir são armazenados fora de físico registro, a recuperação de transmitir dados requer adicional acessos página.
- Dados de fluxo podem ser ler ou gravado como uma entidade única ou no menor pedaços.
- Como transmitir dados estão armazenados fora de registro, é possível para outras operações modificar ou excluir o registro enquanto partes de dados a transmitir estiverem sendo acessado ou modificado. Você pode evitar isso, usando transação de isolamento níveis ou por gravar ou ler os transmitir dados como uma entidade única.
- Dados de fluxo não não Por padrão compactado, mas ele pode ser compactado usando o sinalizador DB_PROP_COMPRESSED. Compactação de fluxo não pode ser alterada usando a função CeSetDatabaseInfoEx (EDB). Depois de transmitir é compactada, você deve acessá-lo em um único bloco.
- CEVT_STREAM não pode ser usado em uma ordem classificar.
Acessando CEVT_STREAM
Com o tipo de dados CEVT_BLOB, possível ler dados do e dados de gravação para CEVT_STREAM, usando o CeReadRecordPropsEx (EDB) e as funções CeWriteRecordProps (EDB). No entanto, quando você ler e gravação um transmitir usando essas funções, transmitir todos os dados deve estar em memória vez, no CEPROPVAL::val.blob membro, que pode ser muito ineficiente se a transmitir for grande. Por esse motivo, a seguinte transmitir funções habilitar acessar eficiente para transmitir um grande de dados no menor partes:
As seguinte funções transmitir são também disponível ao trabalhar com dados transmitir:
Observação
Se os dados transmitir estiver compactados, não é possível usar as funções transmitir.Você deve usar o CeReadRecordPropsEx (EDB) e as funções CeWriteRecordProps (EDB).
Lendo dados de fluxo quando CEDB_AUTOINCREMENT for ativado
Quando você aberto um banco de dados usando a função CeOpenDatabaseInSession (EDB), você pode especificar o sinalizador CEDB_AUTOINCREMENT. Se você definir o sinalizador CEDB_AUTOINCREMENT, a atual buscar posição é automaticamente incrementadas com cada chamar para CeReadRecordPropsEx (EDB), se você está lendo dados non-Stream ou transmitir dados. No entanto, a posição buscar não é incrementada com cada chamar para CeStreamRead. Isso pode levar a um comportamento inesperado. Para evitar isso, fazer chamadas para CeStreamRead Antes chamadas para CeReadRecordPropsEx Quando você está usando CEDB_AUTOINCREMENT.
CEVT_RECID
O CEVT_RECID tipo de dados (registro identificação) fornece uma gerado automaticamente, 128-bit CEGUID linha identificador. Esses identificadores podem ser salvos e indexados. Ao utilizar a CEVT_RECID Considere o seguinte:
- Acessar o valor das propriedades de CEVT_RECID tipo da mesma maneira que você acessar o valor das propriedades das CEVT_BLOB tipo.
- Você pode gravar propriedades de um valor explícito CEGUID CEVT_RECID tipo, mas uma vez o valor é gravada, ele não pode ser modificado.
- Uma propriedade de CEVT_RECID tipo não pode ter NULL valores.
- O CEVT_RECID tipo de dados pode ser usado em uma ordem classificar.
CEVT_AUTO_I4 e CEVT_AUTO_I8
O CEVT_AUTO_I4 e CEVT_AUTO_I8 Tipos dados fornecem inteiros gerado automaticamente. A seguinte tabela mostra o numérico intervalos que aplicar a esses tipos dados.
Tipo de dados | Intervalo |
---|---|
CEVT_AUTO_I4 |
Zero a 2 para a energia 31, 32-bit inteiro. |
CEVT_AUTO_I8 |
Zero a 2 para a energia 63st, um 64-bit inteiro. |
Ao usar o CEVT_AUTO_I4 e I8 CEVT_AUTO Tipos dados, considere o seguinte:
- Os valores das propriedades de CEVT_AUTO tipo são gravados automaticamente e não pode ser atualizado.
- Apenas um CEVT_AUTO tipo de dados pode ser usado em um banco de dados.
- O CEVT_AUTO Tipos dados podem ser usados em uma ordem classificar.
Volume e limites de tamanho tipo de dados
Ao comparar as capacidades de edb e CEDB, as diferenças mais perceptível são o tamanho máximo de registro e o com suporte tamanhos para os CEVT_BLOB e CEVT_LPWSTR Tipos dados. Usando o CEVT_STREAM tipo de dados, que armazena dados fora de registro, registro tamanho limitações são facilmente superar em Edb.
A seguinte tabela mostra os limites tamanho para dados vários tipos de bancos de dados Edb, CEDB e SQL Server Compact Edition:
Tipo de dados | Edb | CEDB | SQL Server 2005 Compact Edition |
---|---|---|---|
CEVT_BLOB |
8000 bytes |
64 KB |
1.07 GB |
CEVT_LPWSTR |
4000 characters |
64 KB |
Mapas para NCHAR/NVARCHAR |
CEVT_STREAM |
32 MB, metade o tamanho máximo de volume. |
Não suportado |
Mapas para imagem/ntext |
A seguinte tabela mostra os limites tamanho para vários recursos de bancos de dados Edb, CEDB e SQL Server Compact Edition:
Recurso | Edb | CEDB | SQL Server 2005 Compact Edition |
---|---|---|---|
Tamanho máximo de volume |
64 MB |
16 MB |
2.14 GB |
Tamanho máximo de registro |
8 KB, excluindo transmitir dados |
128 KB |
4 KB |
Número máximo de propriedades por banco de dados |
Propriedades de 1024 |
Nenhum limite |
255 properties |
Comprimento de nome máximo de propriedade |
128 characters |
Não suportado |
128 characters |
Comprimento do nome volume máximo |
(MAX_PATH - 13) caracteres |
O valor de sinalizador MAX_PATH |
128 characters |
Número máximo de pedidos classificar |
16 pedidos classificar |
4 sort orders |
249 sort orders |
Número máximo de propriedades em uma ordem classificar ou índice |
16 properties |
3 properties |
10 properties |
Máximo de comprimento da chave em uma ordem classificar ou índice |
512 bytes |
512 bytes |
510 bytes |
Valor de escalação bloqueio padrão |
100 |
Não suportado |
Não suportado |
Número máximo de simultâneo transações |
255 |
Não suportado |
Não suportado |
O comprimento máximo de senha |
40 characters |
Não suportado |
40 characters |
Número máximo de aberto alças banco de dados |
256 |
Não suportado |
Não suportado |
EDB restringe o tamanho de CEVT_LPWSTR e CEVT_BLOB Tipos dados a 4000 caracteres e 8000 bytes, respectivamente, ao passo que CEDB oferece suporte a dados tamanhos up to 64 KB. No entanto, com a adição de novo CEVT_STREAM tipo de dados, você pode agora armazenar muito maior valores dados. Além disso, embora edb tenha um tamanho máximo de registro que é muito menor do que de CEDB, transmitir dados está armazenado externo para o registro e, portanto, não assunto para este limite.
See Also
Reference
CeOpenStream (EDB)
CeStreamRead (EDB)
CeStreamWrite (EDB)
CeStreamSeek (EDB)
CeStreamSaveChanges (EDB)
CeStreamSetSize (EDB)