2.1 is no longer sold or supported - these pages are for reference purposes only. VistaDB 3.x should be used for all new development.
VistaDB 2.1 Database
VistaDB data is stored in single-apartment .VDB
data store files. These .VDB files is a true database format that provides
support for storing rich data types, data integrity and robust transaction
processing support. Multiple .VDB database files may be created and managed by
any VistaDB application.
Features
- .VDB databases are single-file data stores that contain all
the data for a database
- 4TB of data per database
- 65,535 tables per database, 65,535 columns per table and
65,535 indexes per table
- Blowfish encryption key can be 8 to 56 characters with the
VistaDB engine implementing 16 iterations of encryption using the key
- Database, table or column level encryption
- Compression may be applied to character and binary type
columns
- Dynamically set default values when records are added or
modified with static values or V-Script function results
- Primarky and Foreign keys
- Indexes support case insensitivy and case sensitivity,
ascending and descending flags
- Full-Text Search indexes make finding text in Varhchar,
Character and Memo fields
- Indexes are automatically compressed
- Default values for new records may be set using traditional
static values or they may be generated dynamically using pre-defined functions
such as GUID() and NOW() (See below)
- True record deleting -- records are not marked for deletion,
they are deleted and the disk space is reclaimed by the database
- Configurable page size in the database file to optimize data
access depending on type of data baing stored
- Automatic best-fit block size allocation for BLOB and Memo
type data
- Constraints
- Relationships (via Primary and Foreign keys)
- Columns may be marked as read-only and hidden
- Columns may be assigned captions and descriptions
- Tables may be assigned descriptions
Data Types
| SQL Server 2005 |
VistaDB 3.0 |
VistaDB 2.x |
.NET System |
| BigInt |
BigInt |
Int64 |
Int64 |
| Bit |
Bit |
- |
Byte |
| Bit |
Bit |
Boolean |
Boolean |
| Char |
Char |
Character |
String |
| DateTime |
DateTime |
Date |
DateTime |
| DateTime |
DateTime |
DateTime |
DateTime |
| Decimal |
Decimal |
- |
Decimal |
| Float |
Float |
Double |
Double |
| Identity Fields |
Identity Fields |
AutoIncrement |
- |
| Image |
Image |
BLOB |
Byte[] |
| Image |
Image |
Picture |
Byte[] |
| Int |
Int |
Int32 |
Int32 |
| Money |
Money |
Currency |
Decimal |
| NChar |
NChar |
- |
String |
| NText |
NText |
- |
String |
| NVarchar |
NVarchar |
- |
String |
| Real |
Real |
- |
String |
| SmallInt |
SmallInt |
- |
Int16 |
| SmallMoney |
SmallMoney |
- |
Decimal |
| Text |
Text |
Memo |
String |
| Timestamp |
Timestamp |
|
VistaDBType.BigInt |
| TinyInt |
TinyInt |
- |
Byte |
| UniqueIdentifier |
UniqueIdentifier |
Guid |
Guid |
| VarBinary |
VarBinary |
- |
Byte[] |
| VarChar |
VarChar |
Varchar |
String |
Specifications
| Maximum |
Details |
|
# of Columns in a Table |
65,535**
This applies to all column types. |
|
# of Columns in an Index Key |
Depends on the Column types involved in the
index key and the maximum key length allowed in the database. See: Size of
Index Keys |
|
# of Decimal Places in a BCD Field |
4 |
|
# of Indexes in a Table |
Primary indexes per table: 1 Secondary
indexes per table: 65,535**
Increasing the number of secondary indexes
may affect performance since the engine must update all indexes when row
changes are applied. |
|
# of Open Tables |
65,535**
VistaDB requires 80KB of memory per opened
table without indexes and 10KB additionally for each index. In reality, the
limit is based on available memory constraints of the operating system or
hardware. |
|
# of Rows in a Table |
4,294,967,294
VistaDB uses an unsigned 32-bit integer RowId
to address physical records. When a record is deleted, the respective RowId
doesn't participate in further table modifications, and the record apartment is
put into re-cycling. RowId's get re-assigned to records when a database is
packed. |
|
# of Rows in a Transaction |
Limited only by available memory constraints
of the operating system or hardware.
Transactions use multi-versioning record
schema. New record versions are allocated for every nested transaction.
|
|
# of Tables in a Database |
65,535 In reality, the limit is based on available
memory constraints of the operating system or hardware. |
|
Size of BLOB, Memo, Picture and Varchar Columns |
4GB per column (65,535** tested)
BLOB, Memo, Picture and Varchar Column data is not stored
in the record and therefore, each of these Columns types can store the full 4GB
without affecting the overall record size. A small 14 byte pointer value is
stored in the record for each of these Column types. |
|
Size of BLOB Blocks |
VistaDB does not require the BLOB block size
to be specified. |
|
Size of Column Constraint |
4GB (65,535** tested) |
|
Size of Column Descriptions |
4GB (65,535** tested) |
|
Size of Column Names |
64 bytes by default
This value can be changed when a database is
created. It could increase up to ¼ the size of cluster length used for
the database file storage. |
|
Size of Database File |
4TB per .VDB database file
Theoretical limit is 16 Exabytes. |
|
Size of Database Names |
256 bytes |
|
Size of Database File Cluster |
1024 bytes by default.
This value can be increased by 1024 byte blocks up to 8K,
when a database is created. |
|
Size of Index Names |
64 bytes by default
This value can be changed when a database is
created. It could increase up to ¼ of the size of the cluster length
used for the database file storage. |
|
Size of Memory Tables |
Limited only by available memory constraints
of the operating system or hardware.
Memory Tables and Memory Databases follow the
same restrictions and constraints as physical tables and databases. |
|
Size of Index Keys |
483 bytes by default.
Index Key Length depends on the cluster
length allocated for database pages. This value could be manually set when the
VistaDB database file is created. The formula to calculate this value
is: MaxIndexKeyLength = (ClusterLength - 58) / 2 |
|
Size of Index Pages |
1,024 bytes by default.
This value can be increased by 1024 byte
blocks up to 8K, when a database is created. |
|
Size of Records |
4GB per record
BLOB, Memo, Picture and Varchar Column data is not stored
in the record and therefore, each of these Columns types can store the full 4GB
without affecting the overall record size. A small 14 byte pointer value is
stored in the record for each of these Column types. |
|
Size of String Fields |
Maximum length of a string field is 512
bytes. This figure does not include a NULL terminator character. The NULL
terminator character is handled internally. |
|
Size of Table Descriptions |
4GB |
|
Size of Table Names |
64 bytes |
Imposed Limits (** where noted)
VistaDB was designed using 32-bit and 64-bit
memory addressing in most situations that required large upper limits. The
effect of supporting large upper limits are ranges that exceed 4 billion or 4GB
for 32-bit values and provides massive Exabytes limits for 64-bit values.
Because of our focus on supporting the creation of small to midsize
applications, supporting such enormous upper limits is not feasible for
testing. Therefore we have implemented some self-imposed limits in some
places.
Setting Default Values
VistaDB allows you to dynamically set default values when new
records are added, or optionally when they are modified, using pre-defined
functions. With this feature, you can generate a wide range of data settings
based on the existing data types. For example, you can use the GUID() function
to generate unique GUID values and "version control" table records, or use the
NOW() function to stamp new records with the current Date and Time. |