World’s Fastest most Scalable C# .NET Object Database
VelocityDB is an Object Database but it is also aNoSQL, a Graph Data Store and an excellent choice forEmbedded database or aDistributed database. By usingclass BTreeMap<Key, Value>, an efficient distributed Key/Value store is provided as well.
What is OODB?
An object database allows software developers to develop application data models, store them as objects, and replicate or modify existing objects to make new objects within the object database system. The database is integrated with the programming language, allowing the developer to maintain consistency within one environment, since both the database system and the programming language will use the same model of representation.
Among other benefits, this architecture eliminates the need for a cumbersome mapping layer between the database model and the application data model.
Object verses Relational
A relational database stores all data in tables on a server. Clients talk to such servers usingSQL statements such as "select * from actors". Data is also created and updated using SQL. VelocityDB is not a relational database (but it is very good at managing relations!), with VelocityDBC# objects are stored as objects with all references/relations between the objects. Using VelocityDB persistentC# objects is very similar to using in memory C# objects. Data is created by creating C# objects; updates are accomplished by updating C# objects. The persistent store is safely done using transactions withlocking protection so that one user can't accidently undo other user's changes. Like mostdatabase systems, VelocityDB uses paging but unlike other systems VelocityDB data pages have variable size and can optionally be encrypted and compressed. VelocityDB persistent objects have an object identifier (Oid) consisting a DatabaseNumber-PageNumber-SlotNumber.
Using VelocityDB saves time and money for all software requiring reliable, high performance data persistence. The use of VelocityDB can be hidden from your application user's and doesn't require a team of database administrators (DBA's).
The most important benefit is the flexibility that this database system provides. No other types of database system lets you fine tune your application to the finest details. Using VelocityDB, you can choose the best possible data structures for your application. You can control exactly where you place the data persistently. The placement choice can make a huge difference for performance. With VelocityDB you will have the ultimate tool for persisting data efficiently with unbeatable performance.
Unstructured Data can be managed efficiently using VelocityDB. Several of the sample applications provided with thedownload explore unstructured data. Thetriangle counter test demonstrates how efficient it is to follow association/relations. In memory, an association in VelocityDB is simply a C# object reference. It can't get any more efficient than that. The Kevin Bacon Numbers sample is another example showing how efficient we can handle unstructured data. A common way to manage unstructured data is to add such data to aninverted index. That way we can efficiently query such data, like if we want to know what store products that match one or more words. The entire Google search mechanism is based on an inverted index. In some of our samples we use inverted indexes, these samples include;TextIndexer and Wikipedia.
A shopping web site in prototype production uses an inverted index to help shoppers find products they are looking for, try the product searchhere. It currently manages about 30 million products from about 650 stores (~33 GB of data).
VelocityDB is extremely scalable; it can handle small applications with small amounts of persistent data as well as applications using trillions of objects up to about anYottabyte in size per session. Unlimited number of sessions can be used per application. Performance is fantastic, a billion Person object database is quickly created, a little over 1 hour, and can be browsed with the VelocityDbBrowser.
To use VelocityDB you need to have Visual Studio 2012 C# (or Visual Studio 2010 + sp1) using .NET 4.0 and a Windows 8 PC (other Windows versions OK if recent). Other .NET languages may also be used.SharpDevelop is a free light weight alternative to Visual Studio. Some versions of Visual Studio are also free. MacOS and Linux platforms are available by using the cross platform, open source .NET development framework mono. Android and iPhone deployable C# .NET applications are possible by usingMonoTouch. Free trial download of VelocityDB is availablehere.
Some people created a nice well made GUI based tool for comparing Database performance and size. I used this tool for performance tuning of VelocityDB. The benchmarks are limited in scope but for what they test, they are very good and compare 11 different Databases. VelocityDB performes nicely in comparison. Only the mysterious STSdb performes better in some cases but STSdb has a very limited API, isn't distributable, and cannot directly store classes with relations to other classes. The entire benchmarks lacks such cases and also doesn't test large objects. Databases part of the benchmark include: STSdb, Acess 2007, db4objects, Firebird, H2, MS SQL Server, MySQL, Oracle BerkeleyDB, Perst, and SQLite. VelocityDB is not yet part of the official benchmark but I will try to have it added. You can test VelocityDB with this tool using the VelocityDB implementation of the benchmark tests. The tests currently do not use .net 4 which is what VelocityDB requires but you can make it work using .Net 4.0. VelocityDB files: VelocityDbBenchmarkCompressed.zip . The C# source code for the entire tool can be downloaded from here.