NosDB Features



Platform & Technology


Feature

Description

DB Server (native .NET) 100% native .NET product. Both server and client portions are developed in .NET. This means that database servers run natively on Windows and are fully compatible with .NET application stacks.

NosDB fully supports Windows 2012 & 2016 including PerfMon counters and Windows Event Logs.
.NET API Provides a rich native .NET Client API to give your .NET applications access to all the features of NosDB.
Java API Provides a native Java API that is identical to the .NET API in features. This Java client API is available on both Windows and Linux platforms.
REST API Provides a REST API with most features of the regular .NET API. You can use this REST API from any programming language including Node.js, Python, PHP, and others.

^ Top


Data Model


Feature

Description

JSON Documents NosDB is a NoSQL database with JSON documents. JSON is a very flexible schema that allows you to rapidly develop your applications and then address your quickly changing requirements afterwards.
Normalized Data Model NosDB allows you to use a normalized JSON schema as compared to an embedded one. A normalized schema means each sub-document is stored separately and a relationship between them is maintained through a related key. You can then run SQL queries to find related documents of a given document.
Embedded Data Model Unlike a Normalized Data Model, an Embedded Data Model lets you embed sub-documents inside the main documents. Then, you can treat the sub-document as an attribute of the main document but with further attributes of its own.

You can specify JSON sub-document attributes in SQL queries to make your search more powerful.
Single-Shard Collections NosDB provides multiple types of collections. The first one is a Single-Shard Collection where the entire collection is kept within one shard even if you have multiple shards. This is often very useful and allows you to specify location affinity to various data.
Capped Single-Shard Collections Capped Collections are also Single-Shard Collections but with circular behavior. You specify the size of a Capped Collection and then documents get overwritten in a FIFO manner once the Capped Collection reaches its 'Cap'. Capped collections are very useful in situations where you're saving data in a fixed-sized log.
Multi-Shard Collections A Multi-Shard Collection is extremely scalable because it spans over all the shards in the database. And this means you have a lot of storage space available for this collection because you can always add more shards to the database.

A multi-shard collection uses either Hash-based distribution or Range-based distribution across multiple shards.
Attachments Attachments are BLOBs that are stored in the database as attributes of JSON documents. But since they're very large, they cannot be stored in one call and multiple calls are needed to read and write them in chunks.
CLR Triggers CLR Triggers are .NET functions registered against database operations on a collection. CLR Triggers are executed inside the NosDB database server. There are Pre- and Post- Triggers for Insert, Update, and Delete operations on a collection.
CLR User Defined Functions (UDF) User Defined Functions (UDFs) are collection-level CLR functions that can be used in SELECT queries just like built-in functions. They are particularly useful in cases where a certain calculation is frequently required.

CLR functions also run inside the NosDB database server.

^ Top


Performance and Scalability

Performance is defined as how fast operations are performed at a normal transaction load. Scalability is defined as how fast the same operations are performed under higher and higher transaction loads. NosDB is extremely fast and scalable.

See NosDB benchmarks at Performance and Scalability Benchmarks.

Feature

Description

Database Performance NosDB is extremely fast and provides parallel reads and writes in the database server for maximum throughput. It also uses in-memory caching within the database server for a further performance boost.

Finally, NosDB allows you to use client-side in-memory caching to cache documents, collections, and query results. This reduces database trips and significantly improves performance.
Scalability NosDB provides linear scalability and allows you to grow the database cluster to 100's of servers. As a result, your database tier never becomes a scalability bottleneck.
Multiple Shards & Replicas NosDB database cluster consists of multiple shards (partitions). You can also create shard-replicas. All of this allows you to linearly scale your transaction and data load while at the same time achieve high availability through replication.
Data Distribution
(Hash, Range)
NosDB distributes data to multiple shards based either on Hash-based or Range-based distribution. Hash-based distribution uses a hashing algorithm to evenly distribute data across all shards. And database clients are notified about all the shards and the distribution information so they can directly go to where the data is. This boosts performance.

Range-Based distribution allows the user to specify multiple sets of ranges against a given key. And each range is then mapped to a shard and all documents belonging to this range are stored in this shard.
Read-load Shared by Replicas NosDB allows you to create both shared replicas and dedicated replicas. Shared replicas are created on active servers of other shards whereas dedicated replicas are created on separate servers within the same shard.

NosDB allows you to send SELECT queries or other READ operations to dedicated replicas so their resources are also used to handle transaction load. This improves overall performance and scalability.
Asynchronous Operations Asynchronous add, insert, and remove operations are supported.

Asynchronous operations return control to the application and perform database operation in the background and a 'task tracker' is returned to the application. This 'task tracker' then returns success or failure when the operation is completed.

This greatly improves application response time.
Fire & Forget Operations These are asynchronous operations that don't return any data or callbacks to the client. The operation is assumed to have been done successfully. This operation decreases bandwidth usage and improves application response time greatly.
Bulk Operations Bulk Get, Add, Insert, and Remove operations are supported. You can fetch multiple documents in one database trip. This greatly improves performance.

^ Top

High Availability

Feature

Description

Dynamic Clustering NosDB creates a highly dynamic database cluster. This lets you add or remove database servers and shards at runtime without any interruption to the database cluster or your application.

Data is automatically rebalanced whenever a new shard is added or removed. This process is called state transfer.
Connection Failover NosDB provides connection failover support between your application and database servers and also within the database cluster.

In case of a database server failure, NosDB clients continue working with other servers and replicas in the cluster without any interruption.
Shard Replicas (dedicated & shared replicas) A NosDB cluster is divided into multiple shards (partitions). Each shard consists of one primary and multiple secondary servers (replicas). The replicas can either be created on separate servers (called dedicated replicas) or on a primary server of another shard (shared replicas).

If a primary server fails or crashes, the secondary servers go through a vote to promote one of them to become the new primary. This provides uninterrupted operations for the clients.

NosDB also sends READ operations to replicas so as to use their resources and improve scalability.
Dynamic Configuration NosDB provides highly dynamic and available configuration management. There is a Configuration Manager that uses either a single node or builds a two-node configuration cluster. All servers in the database cluster talk to this Configuration Manager.

NosDB clients also learn about all the database servers and a variety of other configuration at runtime from the Configuration Manager.
Split Brain Avoidance NosDB provides split-brain detection and avoidance. A split brain occurs when a primary server within a shard loses contact with the Configuration Manager or some or all of the secondary servers.

Split brain avoidance includes various rules where a new primary is elected or if the existing primary has a majority of secondary nodes with it, then it continues. Either way, all split-brain situations are automatically handled by NosDB.
Auto State Transfer within Shard When a server (primary or secondary) rejoins the shard after a failure or network disconnection, the active running servers start a state transfer within the shard and bring the rejoining server up to date. State transfer within a shard is also executed when a new secondary is added in the shard.

Hence you can say a single shard is self-healing in case of any failures or it auto adjusts to changes in the shard cluster.
Auto State Transfer across Shards State transfer across shards is executed whenever a shard is added or removed in the cluster. NosDB automatically rebalances the data across shards and clients are automatically notified of a new data distribution map.
Journaling (for data consistency) Before NosDB updates the database on the disk, it writes an entry into a journal (on the disk). The journal write is very fast because it is local and does not involve a lot of work. After this, the server updates the database on the disk.

By using a Journal, the chances of losing a database update drops significantly because this update already exists in the Journal. So, a Journal provides extra safety in ensuring data consistency.
Multi-Data Center Support NosDB allows you to configure your database to span multiple data centers. First is the active-passive configuration where only replicas exist in the passive datacenter. NosDB sends READ operations to these passive datacenter replicas based on the 'nearest replica' algorithm for applications running in that data center.

Second is to have active-active database with partitioning so some of the shards exist in data center one while others exist in datacenter two. And applications have access to all the shards.
Upgrade without Downtime NosDB allows you to upgrade to a newer version without having to stop the database server. You can upgrade one server at a time and keep the upgraded server in the compatibility mode to the older version until all servers are upgraded and then you can turn off the compatibility mode so the new version is active.

^ Top

In-Memory Caching

Feature

Description

DB Server In-Memory Caching The NosDB database server has an internal in-memory cache. All updates are first written to this cache before being written either to the Journal or the database storage itself. This speeds up the database server performance.

You can specify if NosDB should return control to the application immediately after writing to the cache or if it should also update the database first. Returning after the cache update is really fast.
Client-side In-Memory Caching (Client Cache) NosDB also provides a built-in client-side In-Memory Cache. NosDB internally uses NCache for this feature.

Client-side cache allows NosDB to cache JSON documents, collections, and query results and keep it within the NosDB client application memory (InProc). This makes accessing them super-fast.

Also, the client-side cache is kept synchronized with the NosDB database through NosDB's SqlDependency feature so you don't have to worry about cached data becoming stale.
Pluggable Distributed Cache (NCache) If your need to cache a lot of data where Client-Side In-Memory Cache won't be sufficient (because all its cached data is kept within your client application process), then you should plug-in NCache as a caching tier without any code changes.

NCache is industry's .NET distributed caching leader for 10 years and is popular among .NET developers.
Cache Documents, Collections, Query Results You can cache JSON documents, collections, and query results. You can do this through passing parameters options in NosDB method calls. Therefore, no extra programming is required for you to do this.

You can do all of this regardless of whether you're using Client-Side In-Memory Cache or NCache Integration.
Client Cache (Near Cache) If you choose to use NCache as a caching tier, you still have the option of using the Client Cache feature of NCache. Client Cache is a local cache (InProc or OutProc) that sits on your application server but is connected to the caching tier and keeps the Client Cache synchronized with the caching tier.

This allows you to cache frequently used data within application process and greatly speed up your application. NosDB uses this feature if enabled to cache your JSON documents, collections, and query results within the application process.

^ Top

SQL Support

Feature

Description

Basic SQL (standard) You can easily use the standard SQL for SELECT, INSERT, UPDATE, and DELETE statements. Other than joins and nested queries, NosDB SQL supports most of standard SQL syntax. Even joins and nested queries, you can implement within your application layer.

This allows you to migrate many relational database applications to NosDB.
Advanced SQL (w JSON) You can use SQL with JSON attributes to search embedded documents thereby avoiding any need for joins or nested queries. NosDB support for SQL is very powerful way for you to access data in the database.
LINQ NosDB fully supports LINQ to search the database. LINQ is a very popular object searching mechanism for .NET developers.
Database Management (DDL) You can use the standard Data Definition Language (DDL) syntax of SQL to create and manage databases, collections, indexes, and more.
Indexing NosDB allows you to define indexes on JSON attributes as well as on keys.

Indexes can be configured to either be in-memory or persisted to disk. Keeping it in-memory improves indexing performance. In-Memory indexes are recreated if a database server restarts.

NosDB also supports Compound Indexing. A compound index consists of one or more attributes together to form a composite index. Compound Index helps to perform AND, OR and other operation in queries faster thus improves query performance.
Sql Dependency NosDB provides an SqlDependency feature similar to SQL Server. SqlDependency allows your application to specify a SQL search criteria based dataset to monitor. Then, if any data is added, updated, or removed from this dataset, NosDB notifies your application through a database notification. This allows your application to then take the appropriate action.

NosDB client-side In-Memory Cache and NCache both use this feature to keep their caches synchronized with NosDB database.

^ Top

Big Data & Business Intelligence

Feature

Description

Map Reduce NosDB provides a .NET based MapReduce Framework where you can run your MapReduce code on all the shards in parallel. This distributed processing close to the data allows you to handle Big Data processing for business analytics purposes.
Aggregator As part of the MapReduce Framework, NosDB also provides an Aggregator interface that you can implement. And, then you can aggregate results of a MapReduce execution into statistical data.

^ Top


Security

Feature

Description

Windows Authentication NosDB provides a Windows Authentication option where you can authenticate users against Active Directory or LDAP.
NosDB Authentication NosDB also provides its own NosDB Authentication. You create users in NosDB and then all those users must authenticate against NosDB before they can access their database.
Authorization NosDB provides role-based authorization to determine what each user is allowed to do.
SSL Support NosDB applies Transport Layer Security (TLS) which ensures that data will be encrypted before being transferred over the network between clients and server.

^ Top


Management Tools

Feature

Description

NosDB Management Studio NosDB Management Studio is a powerful GUI tool for managing clusters and shards, databases, collections, and more. It gives you an explorer style view and lets you quickly administer all the shards from a single place.
NosDB Monitor NosDB Monitor is a powerful GUI tool that lets you monitor NosDB cluster wide activity from a single location. It also lets you monitor all of NosDB clients.

You can incorporate even non-NosDB PerfMon counters in it for comparison with NosDB counters. This real-time comparison is often very important.
PowerShell Integration NosDB integrates into PowerShell seamlessly. You can create clusters, add/remove shards, add/remove replica sets, add/remove collections and much more.

Use these tools from your scripts and automate various admin operations.
PerfMon Counters NosDB provides a rich set of counters for PerfMon. This allows you to monitor NosDB from third-party Windows monitoring tools. It also allows you to combine your application counters with NosDB to get a comparative idea of how all of these things are working together.
Windows Event Log NosDB logs all important events in Windows Event Log. As a result, you can monitor for these events from third party tools and even notify people when these happen.
Server Management API (.NET, REST) In addition to providing NosDB Management Studio and PowerShell Integration, NosDB gives you server management API in .NET and REST. This way, you can write scripts and programs to directly manage various aspects of NosDB.
Full Backup/Restore NosDB provides a Full Backup/Restore tool. Use this tool to do periodic backups so in case your database crashes, you can restore it from the last backup.
Differential Backup/Restore NosDB also provides a Differential Backup/Restore tool that only backs up stuff that has changed since the last Full Backup. This reduces your backup size and time and allows you to restore until the last Differential Backup easily.
Import/Export NosDB allows you to import data into the database from known data formats like CSV or JSON documents. Similarly, you can export data from your database into the same formats.
Move Single-Shard Collection Tool When you create a Single-Shard Collection, the entire collection lives in one Shard. So, if you need to bring that Shard down, you would need to move this collection to another Shard. Or, if you feel that there is too much data in one Shard and you want to move some of the collections to other Shards, you can do that. This tool allows you to do all of that.
Stand-alone to Sharded DB Migration NosDB allows you to create Stand-alone databases. This allows you to migrate a Stand-alone database into a Sharded Cluster.

^ Top


Third Party Integrations

Feature

Description

Visual Studio 2013/2015 You can use NosDB from within your favorite .NET IDE, namely Visual Studio. NosDB is fully integrated with Visual Studio 2013/2105. You can create and manage clusters, database, and collections. And, you can also run SQL queries.

This speeds up your development time because you don't have to go back and forth between different environments. Also, being able to run SQL queries from within Visual Studio makes your coding much easier because you can test your SQL statements before putting them into your code.
ADO.NET Provider NosDB provides support for a subset of standard SQL (without joins and nested queries) so you can develop applications in a familiar environment.

Similarly, NosDB has developed an ADO.NET provider so you can do your database programming with an API you already know. Additionally, you can automatically plug-in third-party controls in your .NET applications with NosDB through ADO.NET. And, you can use third-party tools to access the NosDB database.
Microsoft Power BI NosDB is integrated with Microsoft Power BI, a suite of business analytics tools to analyze data and share insights. Microsoft Power BI allows you to quickly view all your business intelligence data in rich dashboards available on every device.

Please read more about NosDB and also feel free to download a fully working 60-day trial of NosDB.

^ Top