Click here to Skip to main content
15,860,861 members
Articles / Web Development / HTML

RaptorDB - The Document Store

Rate me:
Please Sign up or sign in to vote.
4.96/5 (278 votes)
24 Jul 2019CPOL86 min read 2.3M   16.3K   653  
NoSql, JSON based, Document store database with compiled .net map functions and automatic hybrid bitmap indexing and LINQ query filters (now with standalone Server mode, Backup and Active Restore, Transactions, Server side queries, MonoDroid support, HQ-Branch Replication, working in Linux, .net
v1.0
----
- initial release

v1.1
----
- fulltext indexing via attribute
- string query parser 
- fix shutdown flusing indexes to disk
- rudimentary console application
- lowercase viewnames for string queries
- fulltext search defaults to AND if + - characters not present in query
- Query now works when suppling the view type
- save pauses indexer for better insert performance ~30% faster

v1.2
----
- View versioning and rebuild
- code cleanup
- removed indent logic from fastJSON
- added schema of the query to the Result 

v1.3
----
- Results.Rows are now row schema objects and bindable (even when fields)
- View.Schema must now derive from RaptorDB.RDBSchema
- removed columns from Result (not needed anymore)
- RegisterView throws exceptions instead of returning a Result
- added a rudimentary query viewer project
- null values are ignored when indexing
- bool index filename will end in ".idx"
- sample apps will create data files in the main soultion folder for easy sharing
- you can now do aggregate queries on the results on the client side
- added api.EmitObject for easier mapping (less code to write)
- upgrade to fastJSON v1.9.8
- bug fix datetime in fastBinaryJSON
- added ConsistentView 

v1.4
----
- break up the source into projects
- created client, server dlls
- upgrade to fastBinaryJSON v1.1
- changed to SafeSortedList for thread safe indexes
- add auto installer RaptorDBServer service
- performance optimized tcp network layer
- added dual mode usage to the windows application (embedded, server)
- code cleanup
- added IRaptorDB interface to allow you to switch between embedded and client seamlessly
- load views from the Extensions folder in server mode

v1.5
----
- compressing network traffic over Param.CompressDataOver limit with MiniLZO
- added Delete(docid) and DeleteBytes(fileid)
- added ability to query Guid and DateTime in string form
- bug fix reading boolean indexes
- rebuild view and background indexer handles deleted docs
- added authentication via users.config file in server mode
- Backup & Restore data
- AddUser() method for user
- handle isDeleted when restoring data and rebuilding View
- Auto backup in server mode @ 00:00 time

v1.6
----
- query lambda caching
- transaction support
- bug in datetime serialization

v1.7
----
- server side aggregate queries
- fixed the build script for views to copy the dll to the extensions folder
- server side queries can have filters
- login form default buttons fix

v1.8
----
- upgrade to fastBinaryJSON v1.2 with struct support
- upgrade to fastJSON v1.9.9 with struct support
- bug fix hoot index loadwords when file size is zero
- bug fix linq binding ServerSide -> c.val == stringvariable
- bug fix linq binding -> c.val == stringvariable
- bug fix reflection code in serializers

v1.8.1
------
- speed increase WAH bitmap Set() code 
- bug fix concurrent save bitmap index to disk
- upgrade to fastBinaryJSON v1.3
- upgrade to fastJSON v2.0.1

v1.8.2
------
- bug fix linq binding -> c.val == obj.property (Thanks to Joe Dluzen) 
- added lock to the bitmap index for concurrency
- optimized $types output in JSON and BJSON
- bug fix null check for SafeSortedList.Remove
- bug fix server mode data transfer

v1.8.3
------
- upgrade to fastJSON v2.0.6
- upgrade to fastBinaryJSON v1.3.4
- bug fix linq2string with date,guid parameters
- added double,float types to the indexer valid data types
- added a lock to the IndexFile for concurrency issues (thanks to Antonello Oliveri)
- fixed lock on _que in the logger for concurrency (thanks to Antonello Oliveri)
- fixed the reflection binding to the insert method (thanks to Antonello Oliveri)
- added Count() on views
- added support for paging of results
- the mapper can now see changes it has made in it's own thread in transaction mode while quering

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect -
United Kingdom United Kingdom
Mehdi first started programming when he was 8 on BBC+128k machine in 6512 processor language, after various hardware and software changes he eventually came across .net and c# which he has been using since v1.0.
He is formally educated as a system analyst Industrial engineer, but his programming passion continues.

* Mehdi is the 5th person to get 6 out of 7 Platinum's on Code-Project (13th Jan'12)
* Mehdi is the 3rd person to get 7 out of 7 Platinum's on Code-Project (26th Aug'16)

Comments and Discussions