Giter Club home page Giter Club logo

byodb's Introduction

byodb

challenge for engineering candidates: build a simple database

Using any language you want, construct your own simple database that exposes the following HTTP REST interface:

  • GET /tables - List tables
  • GET /tables/:table - Retrieve the entire contents of :table
  • GET /tables/:table/:key - Retrieve the contents of :key in :table
  • POST /tables/:table - Expects a JSON map in the request body. Merges the contents of that map into :table, overwriting any existing keys.
  • PUT /tables/:table/:key - Expects a JSON document in the request body. Sets the value of :key in :table to that document, overwriting any existing value.
  • DELETE /tables/:table/:key - Disassociates any value with :key in :table
  • DELETE /tables/:table - Empties all keys and values from :table
  • DELETE /tables - Empties all tables
  • GET /search?q=:query - Returns all keys that match the regular expression :query

Note: Don't just wrap an interface around mysql. We want you to build your own data storage and retrieval system.

Some things to think about:

  • How are you going to store the data? Which use cases are you optimizing for?
  • What is going to happen to the data when the service is restarted? What about a crash?
  • How efficient is each of these operations? Can you make them more efficient?
  • What are the proper HTTP status codes to return in the header of your responses?
  • Are there any other useful methods you would add to this interface? As extra credit, implement one or more of these.

You should use whatever languages and frameworks you're most comfortable with as long as your solution can be easily run from a Linux environment. You can also use any open source software libraries that you'd like. Please submit a git repository URL or tarball that includes source code and a README file with documentation and instructions for building and running an instance of your database locally.

byodb's People

Contributors

bpiel avatar

Stargazers

Bill Rossi avatar Daniel Sposito avatar Will Washburn avatar

Watchers

 avatar  avatar TJ avatar James Cloos avatar  avatar

Forkers

bengarvey

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.