GithubHelp home page GithubHelp logo

kvt-store's Introduction

kvt-store

Key Value Timestamp store POC

Prerequisites:

  • sbt for building Scala code

Run application on localhost:8080:

  • sbt run

Run tests:

  • sbt test

Implementations:

  • InMemoryKVTStore: an in memory store based on a concurrent map where each key is associated with an ordered map structure with timestamp as the key (implemented as red-black tree)
  • SQLiteKVTStore: a persistent store backed by SQLite embedded DB. Queries under the hood:
    • Table definition:
        CREATE TABLE IF NOT EXISTS kvt_store (
            `key` VARCHAR(255) NOT NULL,
            `value` VARCHAR(255) NOT NULL,
            `timestamp` TIMESTAMP NOT NULL,
            PRIMARY KEY (`key`, `timestamp`)
        );
      
    • For put operations:
        INSERT INTO kvt_store (`key`, `value`, `timestamp`)
            VALUES(?, ?, ?)
            ON CONFLICT(`key`, `timestamp`) DO UPDATE SET
                `value`=excluded.`value`;
      
    • For get operations:
        SELECT value
        FROM kvt_store
        WHERE key = ?
            AND timestamp <= ?
        ORDER BY timestamp DESC
        LIMIT 1
      

TODO:

  • Add tests for API
  • Alternative implementation for a persistent store (e.g. with Redis)

kvt-store's People

Contributors

lukas-mi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.