GithubHelp home page GithubHelp logo

inmemory-db's Introduction

Simple Database Challenge

In the Simple Database problem, you'll implement an in-memory database similar to Redis. For simplicity's sake, instead of dealing with multiple clients and communicating over the network, your program will receive commands via standard input (stdin), and should write appropriate responses to standard output (stdout).

Data Commands

Your database should accept the following commands:

  • SET name value – Set the variable name to the value value. Neither variable names nor values will contain spaces.

  • GET name – Print out the value of the variable name, or NULL if that variable is not set.

  • UNSET name – Unset the variable name, making it just like that variable was never set.

  • NUMEQUALTO value – Print out the number of variables that are currently set to value. If no variables equal that value, print 0.

  • END – Exit the program. Your program will always receive this as its last command.

Commands will be fed to your program one at a time, with each command on its own line. Any output that your program generates should end with a newline character. Here are some example command sequences:

INPUT OUTPUT
SET ex 10
GET ex 10
UNSET ex
GET ex NULL
END
INPUT OUTPUT
SET a 10
SET b 10
NUMEQUALTO 10 2
NUMEQUALTO 20 0
SET b 30
NUMEQUALTO 10 1
END

inmemory-db's People

Contributors

gabidavila avatar

Watchers

 avatar

inmemory-db's Issues

List Available Keys

Lists all available keys used in memory

Input:
LIST

Return

  • name
  • address
  • a

Return sizes

Return the size of the stored items:

  • COUNT returns the number of keys used currently
  • DBSIZE returns the size of the current storage
INPUT OUTPUT
COUNT 1000
DBSIZE 0.12B

Add Transactions

Transaction Commands

  • BEGIN – Open a new transaction block. Transaction blocks can be nested; a BEGIN can be issued inside of an existing block.

  • ROLLBACK – Undo all of the commands issued in the most recent transaction block, and close the block. Print nothing if successful, or print NO TRANSACTION if no transaction is in progress.

  • COMMIT – Close all open transaction blocks, permanently applying the changes made in them. Print nothing if successful, or print NO TRANSACTION if no transaction is in progress.

Example:

INPUT OUTPUT
BEGIN
SET a 10
GET a 10
BEGIN
SET a 20
GET a 20
ROLLBACK
GET a 10
ROLLBACK
GET a NULL
END
INPUT OUTPUT
BEGIN
SET a 30
BEGIN
SET a 40
COMMIT
GET a 40
ROLLBACK NO TRANSACTION
END
INPUT OUTPUT
SET a 50
BEGIN
GET a 50
SET a 60
BEGIN
UNSET a
GET a NULL
ROLLBACK
GET a 60
COMMIT
GET a 60
END
INPUT OUTPUT
SET a 10
BEGIN
NUMEQUALTO 10 1
BEGIN
UNSET a
NUMEQUALTO 10 0
ROLLBACK
NUMEQUALTO 10 1
COMMIT
END

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.