Git Product home page Git Product logo

noise's Introduction

Noise

A naive Key-Value store DBMS, built in C#.

Getting Started

To use this DBMS, you can go to samuelcox.me/Noise.html and download the version you need from there. There is a class library to operate with a Noise server running on some machine, and a command line client/server.

This program / class lib requires .net 4.6 or higher. I will eventually work to bring it to .net core.

For network connections, port 4044 is required so this port must be allowed.

Noise supports a few commands, please not all keys and values must be delimited by speech marks "":

Set Key Value

This stores a value against the key specified. If you are connected to a server, it will store this on the server. Otherwise it will store this locally.

Get Key

This attempts to get a value stored against the key supplied. If you are connected to a server, it will look at the server's datastore. Otherwise it will look locally.

Delete Key

This attempts to delete a key-value relationship, deleting both the value stored against the key specified, and the key from the data-store.

Server_Connect Key

This connects to a Noise server running on the hostname specified by the key.

Server_Disconnect

This disconnects from any server you are connected to.

Server_Start

This starts a Noise server running on the ip supplied as the key to this command.

Server_Stop

If the server is running, then this stops the server.

Save key

This attempts to persist the Key-Value store to disk, with filename of the key specified.

Load key

This attempts to read a Key-Value store from disk, with filename of the key specified.

App.Config/ Web.Config switches needed.

There are a few app.config/web.config switches that are needed both client side and server side for this program to run.

DataStoreFilePath

This is where the Key-Value data store will be saved to, and read from.

LoggingDirectory

The directory to write a historical log of Queries executed to.

LoggingEnabled

Whether or not to turn historical logging of Queries on.

UseTls

Whether or not to use secure, Tls 1.2 encrypted connections when connecting to a Noise server.

ServerTlsCertificateFilePath

This is the filepath to the Tls certificate the server will use for authentication.

ClientTlsCertificateFilePath

This is the filepath to the Tls certificate the client will use for authentication.

ByteArraySize

This is the size of Byte Arrays to send queries over the network. This highly impacts performance, but if you need to store a larger amount of data and you are having issues, try increasing this on both the client and server.

noise's People

Contributors

samuelcox avatar

Stargazers

Micro avatar  avatar

Watchers

James Cloos avatar Micro avatar  avatar

Forkers

lanicon

noise's Issues

Support SSL/ TLS

Various changes will have to be made to the connectionservice, but this could be quite a big user scenario.

Refactor ConstructQuery

This is bad as it forces separating by commas currently, and it doesn't escape anything either.

Readme update

Put the fact we require .net 4.6 and that you need to open port 4044

Refactor QueryService.ExecuteQuery

Having the massive switch statement is a bit of a pain, there are a few different ways to do this, one that came up in a brainstorm with a friend was to map commands to anonymous functions.

Refactor QueryResult and QueryResultTest

Currently the data retrieved from the query is contained in a list in case it contained multiple values, this is a vision in my head that I had, that didn't quite pan out, and querys will only have a single result now, so this will just be stored as a string property rather than a list. And the test obviously has to take that into account.

Network queries crash on ToString()

Network queries such as

SERVER_CONNECT
SERVER_DISCONNECT
SERVER_START
SERVER_STOP

exist as only a command, and will crash when ToString is called. This is from a null pointer exception from not having a Key or Argument.

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.