VelocityDB is a C# .NET NoSQL Object Database, extended as Graph Database is VelocityGraph.
A bug reported with a reproducible test case is usually fixed within a week. If you have found what looks like a bug or have any questions, don't hesitate to ask us, send us an email, see Contact
User's Guide
API (hml)
API (pdf)
72 Sample / Extension projects provided in download
Quick Start VelocityDB
Quick Start VelocityGraph
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 where you place the data persistently and how it's indexed and accessed. With VelocityDB you will have the ultimate tool for persisting data efficiently with unbeatable performance.
Download Windows Installer
Optional automatic incremental contiguous backup of all data in a database location to a backup location
Encryption (optional at page level, controlled by user for each database location).
Using Windows Authentication when accessing server(s)
This test idea started with a Vertica comparison with Hadoop and PIG. Given 86,220,856 tuples compute the number of triangles that can be formed from these edges. We were not able to run the Vertica, Hadoop or PIG solution yet due to build issues (missing build.xml). Note that VelocityDB only needs about 387MB to store the data for this while Hadoop is claimed to need 160GB !! This same test was also performed using Oracle on a very expensive system. After the Oracle publication came a Kognitio press release where they claim to beat the other databases. We ran a VelocityDB version of this test on a Gateway SX2800 C2Q Desktop PC purchased refurbished for $329 in 2009 plus a $30 memory upgrade in December 2011. Using this low end hardware with Windows 7 and 8GB memory, we most likely outperform all the other databases. Using the Gateway PC, VelocityDB counts the triangles between the 4846609 nodes in test data in about 99 seconds plus 30 seconds for loading the database using 4 threads. Now, with a more powerful ZT Affinity 7644Mi Desktop PC (made in USA), we see improved numbers: 42 seconds plus 14 seconds to load the database. Update Dec 3, 2015 - we now have a new Asus M32CD at $680, with this 6th generation of i-Core 7 6700, elapsed is reduced further: 36 seconds plus 4 seconds to load the database. The same calculations on a very powerful server using Hadoop: 13140 s, PIG: 9540 s, Vertica: 287 s. We will test on a big server asap and we are confident we'll be better or near the Oracle & Kognitio results when utilizing 96GB memory and 12 or more fast cores (cpu's). If you have access to such a powerful Windows machine, please help us out by running the VelocityDB version of the triangle counter test. We want to prove that we are #1! Our client, Ian, in United Kingdom reports much better numbers with VelocityDB. Using HP DL 580 4x 8890 v4 CPU 3TB ram. Retail price £184k. All triangles found within 7s. World's fastest!
Time (s) to compute all triangles - Save Money by using VelocityDB!
See here for many more database benchmarks and comparisons to other database engines
If that is what you see when you examine your application data model then a property graph database will be a great choice since it is intended for this type of applications with lots of connections (in graph terms called edges).
Maybe your application is trying to discover how people are connected to each other via different types of connections like: family relationships, email exchanges, address, phone calls, organization, race, religion, friendship and so on. You can represent all these relationships as edges between vertices (nodes) in a graph and apply search/traverse through the connections to find out how people are connected.
Performance of a graph database does not suffer the cost associated with nested SQL joins. Following relationships can be done without an equivalent of a join, it is instead done by direct lookups or a lookup within a smaller indexed collection/array. A typical relational database does not directly support arrays/collections, each such lookup must be done using a join involving a search of all objects within a table which is slower than a direct traverse within a graph/object database.
PowerPoint presentation of VelocityGraph online here or download it. Feel free to reuse parts of it for your own presentations!
Anyone considering using Cassandra as database should read this great article about Behance at Adobe. It's showing the great advantages of a graph database like VelocityGraph over Cassandra.
DOWNLOADED
Countries with paying Clients
Faster Database
with the latest technologies and no dependencies
More Scalable Database
with encryption and LZ4 compression
More options
with a GUI Database Manager
Cross Platform
Windows 10 PC & Phone, Xbox,
Xamarin iOS, Android and Linux
Import & Export
to/from csv files and JSON
Time (s) to discover 285730264 triangles by combining 86,220,856 tuples
Database Size (MB)
Welcome to VelocityDB Video
by
Oliwia Persson
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.
In order to be fully productive with an object oriented database, you need to purge your relational database thinking and think object oriented, a good book about this is "Object Thinking".
JavaScript Object Notation (JSON) is the data structure of the Web. It's a simple data format that allows programmers to store and communicate sets of values, lists, and key-value mappings across systems. JSON is really just a simple schema less language that was created to support web pages. If your data is small and simple then a JSON document database may work OK. If you have more connected and large data sets, it is not a good solution. When data gets more complex, larger and more connected, an object or graph database will get the job done much better with way better performance and scalability. First, JSON is very limited in data types supported, it only supports 4 data types: Number, String, Boolean and Array. Secondly, it is usually schema less meaning that you can store any JSON object without following any rules of what fields or field types each object contain. That means that each JSON object enters a database as a text string that is parsed to discover its fields and types. JSON does not support references between objects but references are often accomplished by designating one of the string fields to hold an object id using UUID text strings such as "6438850b-b33d-475f-95d7-8997606431a5".
Now compare this to how it is done with VelocityDB; Unlimited data types supported, almost any .NET data type can be persisted (one exception is Delegates as it involves code pointer data). VelocityDB uses a schema so that we can control what is stored. Any data, even unstructured, can still be stored as you can control how specific you make the schema. Having a schema enables serializing .NET object without having to describe each field data type, field name for each object stored. Redundancy is eliminated and objects can be used and stored as binary data with just the field values, not all its meta data, for each object. Having the schema gives structure that is used when constructing Linq queries. Support for object references is built in and only occupies 4 - 12 bytes in persistent storage. You can still use JSON when interacting with Web applications, Microsoft supports .NET object to/from JSON when used with frameworks such as Entity Framework. VelocityDB support import and export to/from JSON. Anything that can be done with a dedicated JSON database can also be done with VelocityDB. Simple comparisons between VelocityDB and JSON databases shows how performance and data size is affected by these differences. As data get larger these differences will increase. See comparison with MongoDB and Couchbase.
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.
A detailed comparison between VelocityDB and a relational database can be found here as a pdf doc, as html here or original Word document here. This is a document under construction. Help us if you can.
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 is not always online). 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 half a 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, less than 1 hour, and can be browsed with the Database Manager.
Over the last two years, my team has implemented VelocityDB into our core API library with tremendous success. The software has helped solve memory performance issues caused by large, in memory, collection processing without impacting performance, overall. The resultant database has been key in helping my team track down runtime issues for customer projects in conjunction with enabling key points in our process to restore to when needed. The software is fast, efficient, lightweight and best of all simple to use. Whenever an issue or question has arisen, the VelocityDB team has been amazing! They have been fast to respond, always willing to help and eager to understand the situation and provide direction/answers. In conjunction with VeloctyDB, we utilize their sister product VelocityGraph which has helped write core pieces of code from thousands of lines to less than 100. I strongly recommend anyone looking for an Object database look no further! VelocityDB and their team have it all!
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.
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.
VelocityDB seems to be the fastest data base in the World. We tested more than 30 databases and VelocityDb got the golden medal. I am working in a another project to check the crew's working time of all aircraft in Brazil. We have more than 12 million flights per month, it will be checked the last five years. 12x12x5 = 720 million flights. It is VelocityDb helping security on flights.
Use with Visual Studio 2019 plus all updates applied (.NET 5, .net 4.6.1, .net Core 3.1.1, .NET Standard 2.0). VelocityDB NuGet is .NET Standard 2.0
Login / Forgot Password
Create Your FREE Account Now & Get 30 days FREE trial. No credit card required
API
VelocityDB & VelocityGraph Samples
Release Notes
Download VelocityDB Windows Installer
Download VelocityDB without Windows services install(s)