What is SSD?

SSD is an append-only, file-based, immutable key-value store for Microservices written in Ruby.

Key Features

  • Scalable file-based design (each key gets its own file).
  • Immutable Append-only tracks data evolution over time via out-of-the-box UTC timestamped appends (accountants don't use erasers, otherwise they go to jail).
  • Fault Tolerance (out-of-the-box transactional operations).
  • Zero External Dependencies for a Measurably Low Technical Debt (a well-maintained consciously clean lightweight library that prioritizes the sanity of your codebase and takes measures to NEVER complect it).
  • Schemaless (easily meets your data evolution needs).
  • Key-based Rolling-forward\Rolling-back.
  • Super Easy to Learn and Use (up & running in mins).

TODO

  • Out-of-the-box Data Archiving
  • REPL console
  • RAMDisk-based Server
  • Server Web-based Admin Interface
  • Strict hard-coded Security-first SHA256 Encryption policy (implment your own logging for intercepting keys required for decrypting data).
  • JSON objects (based on ruby's native pstore).
  • RESTful HTTP/JSON API Endpoint.

Use Cases

SSD is carefully crafted to scale specially-well with the Microservies Architeturual Pattern to allow providing storage for independently deployable services with ease.

Usage

module MyApp
 class User
  include SSD
  attr_accessor :id # ssd key

  def initialize id
   @ssd = id
  end
 end

 class API < Sinatra::Base
   get '/' do 
     @user = User.new("generated_id")       # Initialize an object form any Class that `include SSD` and assign it a :ssd key 
     @user.append!              # Do an `append!` operation and viola! DONE 
     @user = User.ssd("generated_id")           # Afterwards read it via Class.ssd(:ssd)
   end
 end
end

Concerns FAQs

Asynchronous I/O [https://en.wikipedia.org/wiki/Asynchronous_I/O]

Other Alternatives

References