iBoxDB

Fast ACID Table Style Document NoSQL Application Database

01. Application Database iBoxDB NoSQL Database small footprint makes it easier and cheaper to store and process data object 02. iBoxDB Windows Linux NoSQL DB Database Thread Safe Multi-Threaded Best Lightweight General Purpose Java dotNET Local Database ACID 03. MVCC ACID NoSQL Embedded Document Database Engine Java C# Mono Android iPhone Windows Mobile ASP.NET CSharp 04. An Embedded NoSQL Database with ACID Transactions X86 ARM Mono embedded NoSQL database 05. java database iBoxDB Lightweight Object Document Database nosql databases Agile Development Smart Small JSON Database 06. C# Local Database Lightweight self-contained database c# database dotNET Database document database Cross Platform for Linux and Mac and Win 07. C# NoSQL Embedded Document Database Comparison Android NoSQL Database Java NoSQL Embedded Document Database Comparison Mono NoSQL Database Comparison 08. Lightweight Serverless Database Xamarin Unity3D Linux ACID Transaction NoSQL Database dotNET 09. Best NoSQL Database Embedded For Java Net C# Android Windows Phone Nashorn Stable Standalone DB 11. Mono Unity3D Xamarin ACID Simple NoSQL Database CRUD Lightweight Fast Transaction Mobile Embeddable WindowsPhone Database 12. Transactional Document SQL Database Java C# Multipurpose Self Contained fast database local server Windows Unity DB 13. Linux J2EE Web Java ACID NoSQL Embedded Database JSP WEB HTML5 JavaScript C# FREE Update Increment SQL java database Comparison java object-oriented embedded database 14. In Memory and On Disk ORM NoSQL Document Database for NET Java C# Android embedded database server Cross-Platform Development 15. Android Xamarin Lightweight NoSQL Databases C# Local Database Java File DB document nosql IL2CPP 16. Mono C# Java Simple Small Fast Embedded Local Object Database ACID Android Windows Phone C# dotNET Databases NoSQL Mobile Sync Document Oriented 17. Xamarin Unity3D ORM Professional Transactional Caching NoSQL Database Embedded Database 18. iBoxDB Android Windows Phone Fast Lightweight Mobile Document Database Java Database Engine Embeddable 19. Update Increment Selecting Tracer NET C# MVCC ACID NoSQL Embedded Document Database 20. Nashorn ACID NoSQL Database JavaScript Java Database Unity NoSQL Database C# Java Serverless Table Style Server Free Schema Less KeyValue 21. NoSQL SQL Lite Lightweight Object Relational Mapping ORM Database Java JavaScript Nashorn C# Embedded Document Application Database 22. Database NoSQL Database SQL Agile Development Transaction NoSQL Graph Mono FREE C# local server nosql storage engines

Project Description

iBoxDB is a fast transactional table style document NoSQL Application Database, easily store, process objects and documents, traditional table with unstructured data, zero configuration, pure JAVA and .NET engines, no dependencies.

iBoxDB has a well designed interface with great performance and capability for agile development. You can create applications with database services embedded and deploy it on mobiles, desktops, servers, to persist your data from anywhere.

Dual Core Application Database
For   JAVA   C#   Android   Unity3D   Xamarin   Mono   Nashorn   Linux   Windows

Features

Examples

Each box is an ISOLATED data space (transaction-based)
  using(var box = db.Cube())
  {                            
     //select, insert, update, delete ...
     var result = box.Commit();
  }
  try(Box box = db.cube()){
     ...
     CommitResult r = box.commit();
  }
                    
Normal Object
 box.Bind("Member").Insert(
       new Member() {  
             ID=box.NewId(Member.IncTableID, 1) ,
             LoginName = "Andy",
             Password = Member.EncodePassowrd("123"),
             Tags = new string[]{ "Nice" , "Strong" }
        }
      );
  Member m = new Member();
  m.ID = box.newId(Member.IncTableID, 1);
  m.setName("Andy");
  m.setTags(new Object[] { "Nice", "Strong" });
  box.bind("Table").insert(m);
                    
Dynamic Object (document database)
  game["GameType"] = "ACT";
  box.Bind("Product").Insert(game);
  game.put("GameType", "ACT");
  box.bind("Table").insert(game);
                    
Key Value Style Query
  box.Bind("Table", 2L).Select<AClass>();
   //Composite Key
  box.Bind("Table2", 99, "ABC").Select<BClass>();
  box.bind("Table", ID).select(Member.class);
  //Composite Key
  box.bind("Table2",8, "MyID").select(Product.class);
                    
SQL Like
  //from TABLE where A>? & B<=? order by C limit 0,10
  box.Select<Member>("from Member where LoginName==?", "MyName");
  //from [table] where [condition] 
  //                    order by [field1] desc,[field2] limit [0,10]
  //[Condition:] == != < <= > >= & | ( )
  //[IFunction:] =[F1,F2,F3]
  box.select(Member.class, "from Member where Name==?", "MyName");
                    
Custom QueryFunction
  box.Select<Member>("from Member where [Tags]", new QueryArray("Value"));
Compatible with LINQ (.NET)
  from o in box.Select<Class>("from Class")
  where o.Text.Contains(text)
  select o;
Compatible with Stream (Java8)
  StreamSupport.stream(db.select("from Table").spliterator(), true)
  .collect(Collectors.groupingBy((l) -> l.get("GroupID"),
   Collectors.summingLong((l) -> (Long) l.get("Value"))));
Update Increment
Apply To Trigger Type Value From
AutoIncrement primary key insert number Table Max(ID)+1
UpdateIncrement non-primary key insert/update long Database NewId(MaxPos,1)
Selecting Tracer
Thread Usage
Locker blocked read/write same record
Tracer non-blocked read/write different records
Snapshot-Serializable Transaction
Transaction Step Isolation Level
Application Point Snapshot
Database Point Serializable
Supported Types
.NET JAVA
 bool
 char
 byte
 sbyte
 short 
 ushort
 int
 uint
 long
 ulong              
 float
 double        
 decimal
 DateTime
 Guid
         
 bool? 
 char? 
 byte? 
 sbyte? 
 short?
 ushort? 
 int? 
 uint? 
 long? 
 ulong?      
 float? 
 double? 
 decimal?
 DateTime?
 Guid? 
 string 
       
 //non-indexable
 Dictionary<string, object>
 MemoryStream
 bool[] 
 char[] 
 byte[]
 sbyte[] 
 short[]
 ushort[] 
 int[] 
 uint[] 
 long[]
 ulong[]
 float[]
 double[] 
 decimal[] 
 DateTime[] 
 Guid[]
             
 boolean 
 Boolean
 byte 
 Byte
 char 
 Character
 short 
 Short
 int 
 Integer
 long 
 Long
 float
 Float
 double
 Double
 UUID
 Date
 //dynamic length
 BigDecimal
 BigInteger
 String
 
 //non-indexable
 HashMap<String,Object>
 MemoryStream
 byte[]
 Object[]
                            
IO
.NET JAVA
 class BoxFileStreamConfig
 class BoxMemoryStreamConfig
 class ReadonlyStreamConfig
 class CacheStreamConfig 
 class BoxFileStreamConfig 
 class BoxMemoryStreamConfig
 class ReadonlyStreamConfig
 class CacheStreamConfig 
Database Path
C# & JAVA,  place outside IDE working directory can get better performance
iBoxDB.LocalServer.DB.Root("/data/");
                
ASP.NET Cross Platform
iBoxDB.LocalServer.DB.Root(MapPath("~/App_Data/"));
                      
Xamarin
iBoxDB.LocalServer.DB.Root(System.Environment.GetFolderPath( 
       System.Environment.SpecialFolder.Personal));
                          
Unity3D
iBoxDB.LocalServer.DB.Root(Application.persistentDataPath);
                
Android
iBoxDB.LocalServer.DB.root(android.os.Environment.getDataDirectory()
       .getAbsolutePath() + "/data/" + packageName + "/");
                
JSP WebApplication
@WebListener()
public class StartListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
       String path = System.getProperty("user.home") + "/data/"; 
       new File(path).mkdirs();   
       iBoxDB.LocalServer.DB.root(path); 
    }
}
               
Query
//query
box.Select("from Member");
//query, load to memory first, startwith '*'
box.Select("*from Member");
//query, selecting tracer, startwith '!'
box.Select("!from Member")
                
Index, make Select hundred times faster in average
config.EnsureIndex<Member>("Member", "Field1","Field2")
config.EnsureIndex(Member.class, "Member", isUniqueIndex,"Field1","Field2")
box.Select("from Member where Field1 == ? & Field2 == ?")
Getting Started   C# and Java
 var server = new DB();
 server.GetConfig().EnsureTable<Record>("Table", "ID");
 DB.AutoBox auto = server.Open();
 auto.Insert("Table", new Record { ID = 1, Name = "Andy" });
 var o1 = auto.SelectKey<Record>("Table", 1);
 o1.Name = "Kelly";
 auto.Update("Table", o1);
 auto.Delete("Table", 1);
                    
 DB server = new DB();
 server.getConfig().ensureTable(Record.class, "Table", "ID");
 DB.AutoBox auto = server.open();
 auto.insert("Table", new Record(1, "Andy"));
 Record o1 = auto.selectKey(Record.class, "Table", 1);
 o1.Name = "Kelly";
 auto.update("Table", o1);
 auto.delete("Table", 1);
                
Command Line   F# and JavaScript
 #r "iBoxDB.dll" 
 open iBoxDB.LocalServer 
 open System 
 DB.Root( "C:\\DB" ) 
 let server = new DB() 
 let db = server.Open() 
 for v in db.Select("from OT limit 0 , 2") do 
   Console.WriteLine(DB.ToString(v)) 
 for v in db.GetDatabase().GetSchemata() do 
   Console.WriteLine(v.Key) 
 server.Dispose()
                
 //jjs -cp iBoxDB.jar 
 var DB = Java.type("iBoxDB.LocalServer.DB") 
 DB.root("/db/") 
 var server = new DB() 
 var db = server.open() 
 db.select("from table1 limit 0,3") 
   .forEach( function(v){ print(v) }) 
 db.getDatabase().getSchemata() 
   .forEach( function(v){ print(v) }) 
 server.close() 
                
Benchmark with MongoDB
iBoxDB.Java 32bit System Low Memory
iBoxDB.java v1.4.1 mongodb-win32-i386-2.5.4 mongo-java-driver-2.9.3.jar
Results:
threadCount=100000 , batchCount=10
MongoDB(Default)
 Database Transaction Test: None
 Insert:1000000  AVG:10521 objects/s
 
iBoxDB(File Mode)
 Database Transaction Test: Succeeded
 Insert:1000000  AVG:17981 objects/s
 Update:1000000  AVG:12397 objects/s 
 Delete:1000000  AVG:22869 objects/s
            
iBoxDB(MemoryMappedFile Mode)
 Database Transaction Test: Succeeded
 Insert:1000000  AVG:38458 objects/s
 Update:1000000  AVG:20200 objects/s 
 Delete:1000000  AVG:33342 objects/s
 
iBoxDB(InMemory Mode)
 Database Transaction Test: Succeeded
 Insert:1000000  AVG:39132 objects/s
 Update:1000000  AVG:20226 objects/s 
 Delete:1000000  AVG:33658 objects/s
                

iBoxDB.NET 64bit System
iBoxDB v1.5 mongodb-win32-x86_64-2008plus-2.4.5 MongoDB.Driver v1.8.2.34
MongoDB(Default)
 Database Transaction Test: None
 Insert:1,000,000  AVG: 32,702 objects/s
 
iBoxDB(File Mode)
 Database Transaction Test: Succeeded
 Insert:1,000,000  AVG:33,368 objects/s
 Update:1,000,000  AVG:16,939 objects/s 
 Delete:1,000,000  AVG:22,504 objects/s
 
iBoxDB(MemoryMappedFile Mode)
 Database Transaction Test: Succeeded
 Insert:1,000,000  AVG:42,236 objects/s
 Update:1,000,000  AVG:17,765 objects/s 
 Delete:1,000,000  AVG:23,147 objects/s
 
iBoxDB(InMemory Mode)
 Database Transaction Test: Succeeded
 Insert:1,000,000  AVG:47,382 objects/s
 Update:1,000,000  AVG:26,806 objects/s 
 Delete:1,000,000  AVG:35,092 objects/s
                
Replication Master-Slave , Master-Master
iBoxDB Fast Transactional NoSQL Application Database Replication
iBoxDB Fast Transactional NoSQL Application Database for JAVA, .NET, Android, Mono, Unity3D, Xamarin, Nashorn, Linux, Windows Phone
iBoxDB Fast Java C# .NET Document NoSQL Database Embeddable International iBoxDB iBoxDB Fast ACID Embedded Document Database NoSQL Backup Address
iBoxDB Professional Document Database Transaction NoSQL Application Database Xamarin Unity3D Embedded Database Best Lightweight Xamarin Mono NoSQL Database. Nashorn Java Local Database ACID For Linux Windows KeyValue DB Simple nosql DB FREE Android NoSQL Database Java NoSQL Embedded Document Database Comparison Mono NoSQL Database Comparison Unity NoSQL Database. ORM Multi-Threaded Caching NoSQL DB In Memory Database Object Database iBoxDB Java C# NET Standalone Fast Embedded NoSQL Object dotNet Mono Unity3D Xamarin. C# database General Purpose dotNET Database Xamarin Unity3D Lightweight Serverless Database Windows Phone Android iPhone Mobile Database Embedded Document Database Engine. SaaS IaaS PaaS Transaction NoSQL Database ACID NoSQL Database DB Embedded for Java Nashorn JavaScript Unity Mobile Transaction. Best NoSQL Database J2EE Web Linux Java JavaScript Multipurpose Stable Local Transactional Document best game database Self Contained Embeddable Lightweight Fast C# Local Database In-Process. embedded NET database engine has zero deployment costs NoSQL embedded database for NET Java C# SchemaLess KeyValue Android Java Embedded Document powerful cross platform NoSQL database system. Transactional Thread Safe Java and C# Database Update Increment Java JSP WEB HTML5 JavaScript OODB Mono Application Database SQL Agile Development Small NoSQL Document Database. dotNET Mono ASP NET CSharp NoSQL Database Windows Linux OS X X86 ARM Embedded Document Database Mono Game small fast multithreaded engine and server with memory and disk tables transaction isolation. Android Windows Phone Embeddable C# NoSQL Document Versioning NoSQL Isolation Smart Small JSON Database C# MVCC ACID NoSQL Comparison FREE Java MVCC ACID NoSQL SQL Agile Development Update Increment. iBoxDB Android Windows Phone Fast Lightweight Local Database ACID NET C# Java Serverless TableStyle ServerFree Simple Small Database ACID Nashorn jjs. Simple NoSQL Database ACID CRUD DB Comparison Java dotNET C# Selecting Tracer Graph Embedded Document Database Engine in memory database software for real time and embedded applications. Just Enough to Get the Job Done.