VelocityDB Spezifikationen

  VelocityDB Standalone Version VelocityDB Server Version
Features
Scalable
(Smart caching enables millions of database to be used without running out of memory). From the smallest to the largest databases in the world, VelocityDB can handle it nicely.
High Performance
(Objects are created the same way transient objects are and are made persistent efficiently when requested, persistence does not change the object, just adds an object identifier).
Any serializeable object can be persisted
Compression
(Optional at page level, controlled by user for each database location).
Encryption
(Optional at page level, controlled by user for each database location).
Indexes
(Declarative by using Index attribute in class definitions, index BTree's are maintained automatically by the system).
Copy all database files to a local directory
(A very simple and easy way to backup your data).
Export & Import to/from JSON
Export & Import to/from CSV files
(Each type of object gets its own csv file).
Automatic Backup
Optional automatic incremental contiguous backup of all data in a database location to a backup location.
 
Full Database backup
(API for copying all database files in a "federation" to a selected directory. Can also be done using the Database Manager).
Variable page size
(From a few bytes to GB’s depending on how many objects and their sizes).
Databases and pages do not contain any unused bytes (unlike fixed size database pages), only space for allocated objects.
Auto recovery built in
(No journal files required).
Cloud enabled
Most simple, affordable and efficient cloud choice might be to use Microsoft Azure file storage. VelocityDBServer can also be used from within any cloud platform.
Transaction control
(Atomicity, Consistency,Isolation, Durability) is supported.
Choice of Pessimistic locking and Optimistic locking.
Change event subscription and notification.  
Page level locking.  
In-Memory Only Option
Turns VelocityDB into a powerful In-Memory database. It can be used in combination with High Availability functionality replicating data between servers.
 
Database level locking
Each persistent object has an object identifier
A 32 bit Database number – a 16 bit Page number – a 16 bit Slot number, (stored as a single 64 bit number).
[UseOidShort] attribute for references within a Database.
Use attribute for an entire class or for selected fields of a class.
Shared cache for all users (On server side).  
Local cache for each client.
Pure C#, no SQL and no unmanaged code with a small set of easy to use API.
Small footprint, the C# DLL is ~500 KB, the server is 11 KB.
Automatic use of efficient binary search lookups with LINQ query over a BTreeSet using CompareByField comparator.
Scalable
Compact and super-efficient BTreeSet<key> and BTreeMap<key> collections are provided for keeping track of large sorted collections.
Other collections provided include: VelocityDbHashSet<T>, SortedSetAny<Key>, SortedMap<Key, Value> and, VelocityDbList<Key>
Spatial access methods
An RTree collection is provided inspired by a description on Wikipedia with some enhancements. We have plans to add polygon API, let us know if you need it?
WeakReference Class
A WeakReference<T> class is provided that avoids pinning of large graphs of related objects. Objects are brought back on demand (saves the object identifier in the WeakReference).
Persistent Ojects
Persistent objects can be unpersisted which removes the object from the persistent storage, and then again can be used as any transient object. These can later be persisted again, possibly in a different database.
Databases can be distributed to as many hosts as required.  
Sharding
A popular database term these days is Sharding, the distributable nature of VelocityDB supports this. You define each partition by creating database locations (host+path) for a range of database id's. You can reconfigure these locations whenever you need to.
 
Linq
Use it with; Indexes, persistent collections, Databases or session (AllObjects<T>()).
No Database catalog, only database locations.
Automatic deadlock detection.
Automated tracking of all update transactions and what they update.
Using Windows Authentication when accessing server(s).  
Placement class
For selecting where to store persistent objects. Each persistent class can also help decide about the placement by overriding some base class API. Persistent placement can further be controlled by the field attribute: [ObjectsPerPage(1)] which specifies how many objects are allowed on the same page (in this case 1).
Transient data members in persistent objects are supported by tagging them [NonSerialized].
Auto Increment on a field, similar to feature in SQL, by tagging them [AutoIncrement].
Invalidate cached pages
Invalidate only cached pages updated by a different client (session) instead of all pages within a Database when a page or more has been updated by another client transaction.
 
LINQPad Driver.
Asp.Net Identity Driver
(Source code and sample web app provided).
GeoHash support
(source code and sample app provided). Ported from a Java implementation.
A DatabaseManager for database administration and browsing of data objects.