
Features that will be added in 3.x releases (see roadmap):
| SQL Server 2005 | VistaDB 3.x | .NET System |
| BigInt | BigInt | Int64 |
| Bit | Bit | Byte |
| Bit | Bit | Boolean |
| Char | Char | String |
| DateTime | DateTime | DateTime |
| DateTime | DateTime | DateTime |
| Decimal | Decimal | Decimal |
| Float | Float | Double |
| Identity Fields | Identity Fields | - |
| Image | Image | Byte[] |
| Image | Image | Byte[] |
| Int | Int | Int32 |
| Money | Money | Decimal |
| NChar | NChar | String |
| NText | NText | String |
| NVarchar | NVarchar | String |
| Real | Real | String |
| SmallDateTime | SmallDateTime | Int16 |
| SmallInt | SmallInt | Int16 |
| SmallMoney | SmallMoney | Decimal |
| Text | Text | String |
| Timestamp | Timestamp | Int64 |
| TinyInt | TinyInt | Byte |
| UniqueIdentifier | UniqueIdentifier | Guid |
| Binary | (use varbinary) | |
| VarBinary | VarBinary | Byte[] |
| VarChar | VarChar | String |
| XML | - | - |
| Maximum | Details |
|
# of Columns in a Table |
1,024 This applies to all column types. |
|
# of Columns in an Index Key |
256 |
|
# of Indexes in a Table |
Primary indexes per table: 1 Increasing the number of secondary indexes may affect performance since the engine must update all indexes when row changes are applied. |
|
# of Rows in a Table |
4,294,967,293 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 each transaction. |
|
# of Tables in a Database |
2,147,483,646 In reality, the limit is based on available memory constraints of the operating system or hardware. |
|
Size of Database File |
4TB per .VDB3 database file Theoretical limit is 16 Exabytes. |
|
Size of Index Database Objects |
Page size / 4 Objects are: Database Description, Table Name/Description, column Name/Description, Index Name, View Name/Description, Constraint Name/Description etc. |
|
Size of Check Constraint Expression and Default Value Expression |
Page Size / 4 |
| Size of CLR Proc Signature |
Page size / 4 |
|
Size of Assembly COFF-Image |
Depends on Page Size. For example: |
|
Size of View Expression |
~60,000,000 chars |
|
Size of Rows (Records) |
Maximum size approx. the same as the Maximum Size for Image
column divided by 3. For example: |
|
Size of Text/NText/Image Columns |
Text/ NText and Image column data is not stored in the row if
their data exceeds 25% of the database page size The maximum size
depends on database page size and code page (for character columns).
For example: |
|
Transaction Isolation Level |
ReadCommitted Snapshot isolation |
|
Database File Page Size |
1,024 (by default) - 16,384 bytes Data is read and written by pages. The bigger page, the more time will be required for I/O operations. At the same time, the rows are grouped by several instances and aligned within the page boundary. If the pages size is insufficient to allocate ~3 records, data is expanded and stored to extra pages. The expansion process takes additional time for I/O and thus, the more actual data length a record has, the bigger the page size should be. This Page Size is defined when a database is created. It can be modified later but must be followed by a Pack operation. |
| Data Deployment Options | VDB3 files can be custom named, and deployed on a wide variety of media and platforms. Partial trust - medium trust (shared hosting) environment fully supported. XCopy deployable - Nothing to install on target machine. No services, no registry access. Can run as Guest on any Windows OS. Read only - Data may be written to read only media (CD / DVD ROM) and queried live. LAN - Through the use of mapped drive letters or UNC naming. USB Key - Data may be stored on any Windows drive (NTFS / FAT / FAT32). Isolated Storage - VistaDB fully supports creation and running of databases in Isolated Storage. Memory Backed / VM - Create temp databases that are only backed by Virtual Memory. When the database is closed it is destroyed. |
|
Memory Tables |
A database created in memory. The size is 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. |
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.
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.
We include over 425 NUnit tests with our application to demonstrate our commitement to quality. We also include the reports of our code coverage tests to show our progress in testing the engine. Our goal is to reach 80% code coverage in each module. We are not there yet, but we are working on it.
(Much of this content is still under construction from the old documentation system to the new, so please contact us if you have any questions.)