World’s Fastest, most Scalable & Flexible Database

VelocityDB is a C# .NET NoSQL Object Database that can be Embedded/Distributed, extended as Graph Database is VelocityGraph.


News

Version 3.7 released April 5, 2014. Release notes: Added a preview (format not finalized) of SessionBase ExportToCSV. ImportFromCSV is coming a little later. The goal is to be able to use CSV files for data backup and possibly as an aid when making drastic schema changes. Added a fix for external storage in Windows Phone 8 DLL.

  • Updated Benchmark project includes a few new databases, see here
  • Version 3.3 released Dec 26, 2013. Release notes: Added support for Windows 8 Phone (beta) – see User’s Guide. Added sample DatabaseLocking and WindowsPhoneSDCard.
  • Version 3.2 released Dec 7, 2013. Release notes: BTree, placement fixes and performance improvements. Fix of BTree string compare. Added BTree API AddFast (for large ingest/batch/bulk cases).
  • Added VelocityWeb sample web application using VelocityDB. It includes managing users and IssueTracker. User’s Guide updated to describe installation to a hosting server.
  • A performance comparison with MongoDB has been added here.
  • Version 2.7.0 released June 29, 2013. Release notes: Database Verify application added to sample solution, use it to verify that your objects and references can be opened without any error. Some bug fixes.
  • Event subscription and notification added to the client/server api. EventSubscriber sample showing usage of this new api is also included. Now available for download.
  • In addition to our normal .NET 4.0 based download, we now provide a download build for .NET 3.5. All samples are included in the .NET 3.5 version except a few that are not compatible (Indexes, TextIndexer, TriangleCounter).
  • Swap from one VelocityDbServer host to another without data loss, see for yourself in High Availability sample added in release version 2.3
  • Indexing support added in release version 2.0. Sample code using indexing in download and here.
  • Download page now includes VelocityDB.dll assembly custom build for Mono and Mono for Andoid. Develop using Xamarin.

Value

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).


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 using SQL 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 VelocityDB C# objects are stored as objects with all references/relations between the objects. Using VelocityDB persistent C# 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 with locking protection so that one user can't accidently undo other user's changes. Like most database 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.

Customer Highlights

We selected VelocityDB to proved a faster replacement for a column-based datastore for financial time-series data and it has not disappointed. The ability to tune the database to our storage requirements (ie single class per db, common time-series array lengths for non-tick data) has increased the speed further. Random access of sets on the order of 10,000 – 100,000 observations for calculation and/or visualization is the fastest we’ve seen for any database implementation; to the point where data retrieval is no longer a system bottleneck. Congratulations.

Dan Hinckley, WildAnalytics.

I luckily stumbled across VelocityDB a week or so ago and gave it a try WOW. Object databases done right should be scalable, simple, fast and elegant. VelocityDB is just that. It's very simple to use, certainly more than some other object databases. It works just like you think it should. The way it handles the object depth issue using WeakReference as a id to a collection is very elegant. Unlike others where you explicitly state the object depth before a query and if you get it wrong it just returns a null (set too low) or you cop a big performance hit (set too high). It's scalable - OK, I have not pushed it here as they say it can deal with billions of objects, I've only created about 10 million objects which it does not even blink at. That said I've used other object databases that had trouble with less than this. It is blindingly fast. The first time I loaded the database from a file I thought I had a bug because it finished so quick. But it had done them all. Check out their web site for benchmark comparisons. VelocityDB will change your mind about how your app can and should persist data. I'm a big object database evangelist anyway, but I've told everyone who will stand still for 30 seconds how good it is. Its scalable, fast, simple and elegant - perfect! I've used DB4O before and although it is fairly simple it was slow, less than elegant and certainly not scalable.

Tony Jackson, Canberra - Australia.

Webnodes

Webnodes CMS is an enterprise quality ASP.NET CMS with a unique semantic content technology. Users work in a polished and user-friendly interface. The semantic content engine is the core technology in Webnodes that enables you to use complex data structures.

Webdecisions

Web Decisions provides industry leading big data solutions that deliver campaign execution and actionable business intelligence.

DisTech

DisTech is developing a workflow servicebus.

A peer-centered mental health network for consumers, caregivers, and healthcare providers.

Hart InterCivic, a leading national provider of proven election voting systems.

Com-passz, hotel and restaurant software, is a customer in Hungary using VelocityDB with Mono for Android.

Paradigm Publishing Inc, financial market with trading system.

SMSB Systems, a software development company in Boston and in Mumbai, India.

The attraction of VelosityDB beside speed and size is its ability to quickly establish complex relationships between persistable classes using the robust C# language in the even more robust Visual Studio development environment.

Richard Derby, Beer Brewery in California.


Benefits

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 the download explore unstructured data. The triangle 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 an inverted 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 search here.  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 an Yottabyte 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.


Why use a Database?

It depends on the situation. Maybe your application data is getting too large to hold in memory? By using a database you can limit the memory usage of your application without sacrificing performance.

You may have written your own flat file storage instead of using a database. This may have worked fine but now your application requirements are changing. There is more data and maybe multiple users who want access to the data at the same time. Conventional databases, SQL based relational databases, may not be what you need but a powerful, yet easy to use, object database can replace your in house built data storage solution. VelocityDB is fully transactional, supporting ACID properties, your application can make a GB or more of changes and it can all be undone with a simple transaction abort or if your application suddenly crashes, incomplete changes made to your data will automatically be undone by the recovery mechanism. Multiple users have access to the data from anywhere and can all make changes to the data without accidently overwriting somebody else’s changes.


Why not SQL (NoSQL) ?

Relational databases and Standard Query Language (SQL) was invented in the 70ties, almost half a Century ago. It was good for its time but computer capabilities are about a million times improved and these days object oriented languages rule.

It's time for a replacement/complement to SQL and relational databases. We believe that object oriented and graph databases are ideal for today's complex applications using Object Oriented languages like C#, C++, Objective-C, Java, Python and Smalltalk.

If we are given a chance to prove it, we have the technology that can outperform traditional SQL solutions both in cost and performance.


Videos


System Requirements

To use VelocityDB you need to have Visual Studio 2010/2012/2013 C# (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 using Xamarin. Free trial download of VelocityDB is available here.

Usage Choices

Use VelocityDB standalone on a single PC or use unlimited distributed clients with unlimited distributed servers.

Standlone version can do almost everything that the client + server(s) version can do. See the feature table comparison for the differences.



Not using .NET?, deploy to C++/Java or whatever language you want

First define your data model using .NET then we can provide a deployment tool to other object oriented languages such as C++ or Java. Even deploy to multiple languages for concurrent usage. We can build this feature on request for a fee.

Backup data to text files ...

Backup data to text files such as comma seperated(.csv)/tab seperated table fields that can be viewed with CSV readers or text editors. Having a text only backup format can be useful when making drastic changes to a datamodel. It is also a safe and easy to manage type of data backup. Another idea is to provide export and import using JavaScript Object Notation (JSON). We can build this feature on request for a fee.