What is SSD?

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

Key Features

  • Scalable via a schemaless, thread-safe, file-based design that easily meets your data evolution needs.
  • 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).
  • Key-based Forward\Backward Rolling.
  • 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

gem install ssd
require 'sinatra'
require 'ssd'

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

  def initialize id
   @ssd = id                                   # Setting :ssd 
  end
 end

 class API < Sinatra::Base
   get '/' do 
     @user = User.new("generated_id")       # Initialize an object form any Klass 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 Klass.ssd(:ssd)
   end
 end
end

Concerns FAQs

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

Other Alternatives

References