Introducing liveDBBuild faster systems fasterRobert Friberg, robert@devrex.seTwitter: @robertfriberg, @livedomain,  #livedbhttp://livedb.devrex.se/
Disk.NET Process MemoryCommandserializationEngineClientsClientTransaction LogClientPass queries andcommandsSnapshot.0Synchronized executionSnapshot.1In-memoryObjectModelPrevalent System ArchitectureSnapshot.N
The prevalent hypothesisYour data will fit in available RAM99% of all OLTP database are 1TB or less--Stonebraker, VoltDB
Eric Schmidt, Google CEOAt Google we found it costs less money and it is more efficient to use DRAM as storage as opposed to hard disks.Three minutes with Google's Eric Schmidt , CNN.COM
What is liveDB?A native .NET in-memory database engineFull ACID supportEmbedded engine free to use for any purposeSupports any data representation
The NoSQL revolutionRDBMS paradigm is shakingAlternative data representation, document, graph, key/value, etcSupport large scale databasesLiveDB focuses onMemory vs. DiskFreedom of representationFacebook is not the common case
Relational Database PrisonRelational model formulated 1969Designed to address limitations non-existent today – disk accessA relational model is just one of many possible datarepresentationsPrimitive stored procedure languageO/R Mapping adds to the pain
O/R mapping vs Command/Query patternO/R mapping is based on CRUD patternCRUD is a specialization of Request/responseCommand/Query is more general (superset)You can do CRUD with Command/Query but not the other way around
Business argumentsReduced time to marketLower TCO for software systemsReduced development time up to 40%Operations (no rdbms)Licensing (no rdbms)Faster systems
Developer benefitsModel is pure .NET types and collectionsrepresentational freedomDAL and downwards is eliminatedNo object/relational mappingNo relational modelingNo T-SQL programmingDebuggingVersion controlSupports DDD, TDD
Simple API
Start your engines!var db = Engine.Load<MyModel>(path);db.Execute(command);var c = db.Execute(m => m.Customers.GetById(42));...var cmd = SetPasswordCommand(c.Id, newPassword);db.Execute(cmd);db.Close();
Demo!http://roxsux.devrex.se/Coding a simple modelCommands and queriesHosting the engineSee blog for more info: http://livedb.devrex.se/
DrawbacksModel must fit in RAMLoad time (start up and rollback)Versioning issues.NET Only (Json possible)No magical indexing (yet)
GotchasNo external dependencies from commandsDon’t modify the model with queryRollback is expensiveDon’t manipulate model out of contextDont rely on reference equalityResults are not direct references
ReferencesPrevalent System Architectureprevayler.org, java project from 2003, alive and kickingBamboo.Prevalence .NET 1.1, dead project?VoltDB
Thank you!Robert Friberg, DevrexTwitter: @robertfriberg, @livedomain, #livedbhttp://livedb.devrex.se/

Introducing #liveDB

  • 1.
    Introducing liveDBBuild fastersystems fasterRobert Friberg, robert@devrex.seTwitter: @robertfriberg, @livedomain, #livedbhttp://livedb.devrex.se/
  • 2.
    Disk.NET Process MemoryCommandserializationEngineClientsClientTransactionLogClientPass queries andcommandsSnapshot.0Synchronized executionSnapshot.1In-memoryObjectModelPrevalent System ArchitectureSnapshot.N
  • 3.
    The prevalent hypothesisYourdata will fit in available RAM99% of all OLTP database are 1TB or less--Stonebraker, VoltDB
  • 4.
    Eric Schmidt, GoogleCEOAt Google we found it costs less money and it is more efficient to use DRAM as storage as opposed to hard disks.Three minutes with Google's Eric Schmidt , CNN.COM
  • 5.
    What is liveDB?Anative .NET in-memory database engineFull ACID supportEmbedded engine free to use for any purposeSupports any data representation
  • 6.
    The NoSQL revolutionRDBMSparadigm is shakingAlternative data representation, document, graph, key/value, etcSupport large scale databasesLiveDB focuses onMemory vs. DiskFreedom of representationFacebook is not the common case
  • 7.
    Relational Database PrisonRelationalmodel formulated 1969Designed to address limitations non-existent today – disk accessA relational model is just one of many possible datarepresentationsPrimitive stored procedure languageO/R Mapping adds to the pain
  • 8.
    O/R mapping vsCommand/Query patternO/R mapping is based on CRUD patternCRUD is a specialization of Request/responseCommand/Query is more general (superset)You can do CRUD with Command/Query but not the other way around
  • 9.
    Business argumentsReduced timeto marketLower TCO for software systemsReduced development time up to 40%Operations (no rdbms)Licensing (no rdbms)Faster systems
  • 10.
    Developer benefitsModel ispure .NET types and collectionsrepresentational freedomDAL and downwards is eliminatedNo object/relational mappingNo relational modelingNo T-SQL programmingDebuggingVersion controlSupports DDD, TDD
  • 11.
  • 12.
    Start your engines!vardb = Engine.Load<MyModel>(path);db.Execute(command);var c = db.Execute(m => m.Customers.GetById(42));...var cmd = SetPasswordCommand(c.Id, newPassword);db.Execute(cmd);db.Close();
  • 13.
    Demo!http://roxsux.devrex.se/Coding a simplemodelCommands and queriesHosting the engineSee blog for more info: http://livedb.devrex.se/
  • 14.
    DrawbacksModel must fitin RAMLoad time (start up and rollback)Versioning issues.NET Only (Json possible)No magical indexing (yet)
  • 15.
    GotchasNo external dependenciesfrom commandsDon’t modify the model with queryRollback is expensiveDon’t manipulate model out of contextDont rely on reference equalityResults are not direct references
  • 16.
    ReferencesPrevalent System Architectureprevayler.org,java project from 2003, alive and kickingBamboo.Prevalence .NET 1.1, dead project?VoltDB
  • 17.
    Thank you!Robert Friberg,DevrexTwitter: @robertfriberg, @livedomain, #livedbhttp://livedb.devrex.se/