What is Siaqodb?

Siaqodb is a high performance NoSQL object and document database engine. Written in .NET, the engine supports many platforms including .NET, Xamarin.iOS, Xamarin.Android, Xamarin.Mac, Unity3D, MonoMac and Universal Windows Platform (UWP) (Windows Store, Windows Phone, UWP).

Siaqodb is simple and fast, making it ideal for:

  • Mobile Apps
  • Games
  • Desktop Applications
  • Windows Services
  • Web Applications

What sets Siaqodb apart?

Speed

Above all else, Siaqodb is fast, really fast. It uses native libraries to achieve very high performance numbers on all platforms - see the comparison with RavenDB or with SQLite for more information on our performance. As an example, on a mobile device such as iOS or Android, we have inserted 10k objects with about 8 fields in about a half second. No other local data store can come close!
The entire library still manages to result in a small footprint; requiring no extra dependencies. To use Siaqodb in your project, all that is required is a .NET DLL for each of your supported platforms as well as a native compiled DLL for your target platforms that must be included in your application deployment folder. We offer a platform specific guide to assist in your target project setup.

Synchronization

Since Siaqodb is an embedded database, it is perfect for storing local client data which can enable your client application to run in an offline mode. This is great for clients with spotty network connections such as mobile devices and also as a backup for more permanent clients such as service applications. However, what if we want to get that data back to or from a server? To assist with that, Siaqodb offers built in support for server synchronization with CouchDB, MongoDB, Azure Storage and MSSQL out of the box! The server modules are offered as open source packages to allow you to configure the synchronization routines to match your applications needs.

Simple API

The core feature of Siaqodb is to store and retrieve objects through a simple API. Here is a quick example of for using the API. Let's say that our application needs to store employees and company information and use it in various ways. We will start by defining our objects in C# code:

public class Employee
{
    public int OID { get; set; }  // note; setting an OID is not required and would happen behind the scenes if you omit it
    public Company Employer { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public int Age { get; set; }
    public DateTime HireDate { get; set; }
    public string City { get; set; }
}

public class Company
{
    public int OID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public string Phone { get; set; }
}
Now that we have defined our objects, we will need to use the database engine to store them:
Siaqodb siaqodb = new Siaqodb ("c:\Siaqodb\");
Company company = new Company();
company.Name = "MyCompany";
siaqodb.StoreObject(company);
Employee employee1 = new Employee();
employee1.Employer = company;
employee1.FirstName = "John";
employee1.LastName = "Walter";
siaqodb.StoreObject(employee1);
Now that we have some objects, we can now recall them easily. We can recall all companies:
IObjectList<Company> companies = siaqodb.LoadAll<Company>();
or look for all employees with a name like John:
var query = from Employee emp in siaqodb
                 where emp.FirstName.Contains("John")
                 select emp;
foreach (Employee emp in query)
{
    //do something with employee
}
We can also delete records with one line of code:
siaqodb.Delete(employee);
There are many powerful features in the API to help you manage your data quickly and easily. Please check out the getting started guide for more API information.

That is easy! What other features does Siaqodb have?

Migrations

One of the problems with NoSQL databases can be dealing with changes to your stored object definitions. Let's say with our example above, our application has been in production for a while, then we need to add or remove a field from the Employee class. With Siaqodb, it is a simple matter of changing the class and running your new code. The engine handles the object difference for you in real time allowing your application to change while keeping the existing data and not having to write migration code to handle new or old fields! Check out more about our simple migration procedure here.

Developer Goodies

Here is a list of our top developer tools with some links on how to use them:

How can I check it out?

Thank you for your interest in Siaqodb! If you haven't done so already, head over to our site to download a trial version and start using Siaqodb in your project today. You will also want to check out our pricing to find the package that will work for you.

We have much more planned for Siaqodb. Stay up to date with our development roadmap and follow us on Twitter to keep up with our releases. Thank you and happy coding!