GithubHelp home page GithubHelp logo

stream's Introduction

Database Reader Writer

Implementation

DB Schema

Flexibility of the event schemas is one of the main requirements for this application. time though is a field that will exist for all events and we need to query on a range of it. Also fast reads are essential.

Since PostgreSQL and most of the modern databases have JSON attribute type, I chose to use it for all the fields that can change while having time and event_type in their own columns in an events database. Event's ID is hash of the event's data to avoid duplicate events

Pros:

  • Felixible to add new fields to an event schema or change its type
  • Support indexing on time and event_type to speed up the query
  • No joins between multiple tables
  • Old data is perserved out of the box

Cons:

  • no type validation or schema validation on the event's variant fields.

How to Run

  • for the application to run you'll need a postgreSQL database running, you can spawn an ephemiral dockerized database using make postgres and make migrate to set up the events table
  • there're a make commands already in the make file that will build and start writer and reader processes
make reader
make writer

Testing

  • I implemented some tests for storage layer which can be ran by running make test
  • full integration test suite need to be implemented

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.