All Projects → jchristn → Kvpbase

jchristn / Kvpbase

Licence: MIT License
Scalable, simple RESTful object storage platform, written in C#

Programming Languages

C#
18002 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to Kvpbase

BlobHelper
BlobHelper is a common, consistent storage interface for Microsoft Azure, Amazon S3, Komodo, Kvpbase, and local filesystem written in C#.
Stars: ✭ 23 (-46.51%)
Mutual labels:  storage, restful, kvpbase
PuppyProxy
A simple HTTP proxy in C# including support for HTTP CONNECT tunneling
Stars: ✭ 37 (-13.95%)
Mutual labels:  https, http-server, https-server
Farwest
Framework for building RESTful HATEOAS-driven applications.
Stars: ✭ 18 (-58.14%)
Mutual labels:  https, restful, http-server
Kvantum
An intellectual (HTTP/HTTPS) web server with support for server side templating (Crush, Apache Velocity and JTwig)
Stars: ✭ 17 (-60.47%)
Mutual labels:  https, http-server, https-server
node-jsonrpc2
JSON-RPC 2.0 server and client library, with HTTP (with Websocket support) and TCP endpoints
Stars: ✭ 103 (+139.53%)
Mutual labels:  https, http-server, https-server
Watsonwebserver
Watson is the fastest, easiest way to build scalable RESTful web servers and services in C#.
Stars: ✭ 125 (+190.7%)
Mutual labels:  https, restful, http-server
Less3
Less3 is an S3-compatible object storage server that runs on your laptop, servers, just about anywhere!
Stars: ✭ 16 (-62.79%)
Mutual labels:  storage, object, restful
edap
No description or website provided.
Stars: ✭ 22 (-48.84%)
Mutual labels:  restful, http-server
HttpServerLite
TCP-based simple HTTP and HTTPS server, written in C#.
Stars: ✭ 44 (+2.33%)
Mutual labels:  restful, http-server
min
A decorator web framework for deno
Stars: ✭ 21 (-51.16%)
Mutual labels:  https, restful
Diskover
File system crawler, disk space usage, file search engine and file system analytics powered by Elasticsearch
Stars: ✭ 977 (+2172.09%)
Mutual labels:  metadata, storage
libmicrohttpd-http2
HTTP/2 support for libmicrohttpd
Stars: ✭ 21 (-51.16%)
Mutual labels:  https, http-server
tinyweb
Simple and lightweight HTTP async server for micropython
Stars: ✭ 182 (+323.26%)
Mutual labels:  restful, http-server
tipi
Tipi - the All-in-one Web Server for Ruby Apps
Stars: ✭ 214 (+397.67%)
Mutual labels:  https, http-server
Diskover Web
Web file manager, disk space usage, storage search engine and file system analytics for diskover
Stars: ✭ 121 (+181.4%)
Mutual labels:  metadata, storage
oxen-storage-server
Storage server for Oxen Service Nodes
Stars: ✭ 19 (-55.81%)
Mutual labels:  storage, http-server
phpkoa
PHP异步编程: 基于 PHP 实(chao)现(xi) NODEJS web框架 KOA。
Stars: ✭ 52 (+20.93%)
Mutual labels:  http-server, https-server
ECS-CommunityEdition
ECS Community Edition "Free & Frictionless"
Stars: ✭ 125 (+190.7%)
Mutual labels:  storage, object
nft.storage
😋 Free decentralized storage and bandwidth for NFTs on IPFS and Filecoin.
Stars: ✭ 309 (+618.6%)
Mutual labels:  metadata, storage
Shrine
File Attachment toolkit for Ruby applications
Stars: ✭ 2,903 (+6651.16%)
Mutual labels:  metadata, storage

Kvpbase Storage Server

StackShare

alt tag

Scalable, simple RESTful object storage platform, written in C#

New in v4.2

  • Code manageability improvement, migration to ORM
  • Dependency updates
  • More complete Postman collection
  • Lock management APIs

Help and Feedback

First things first - do you need help or have feedback? File an issue here!

Initial Setup

The binaries for Kvpbase can be created by compiling from source or using the pre-compiled binaries found in Kvpbase.StorageServer\bin\release\net5.0\ (I intentionally did not .gitignore these files). Executing the binaries will create the requisite configuration files and database tables.

$ dotnet Kvpbase.StorageServer.dll

By default, Kvpbase will listen on localhost and only handle requests from the local machine. If you wish to change this, modify Server.DnsHostname in the system.json file. When modifying this value, follow these rules:

  • If you are using an IP address that listens on any interface such as 0.0.0.0, *, or +, Kvpbase must be run using elevated privileges
  • If using any other IP address or DNS name, the HOST header on incoming requests MUST match the value for this parameter

Your First GET Requests

By default, data is stored within ./Storage/[userguid]/[containername]. The setup process will create a series of sample files within the default user's container, also named default, which is configured for public/unauthenticated read access:

Creating Your First Object

To create your first object, call POST /[userguid]/[containername]/[objectkey]. A simple cURL example is shown here.

$ curl -X POST -d "My first object!" "http://localhost:8000/default/default/firstfile.txt?x-api-key=default"

The response is simply a 200/OK.

Then retrieve it:

$ curl http://localhost:8000/default/default/firstfile.txt

The result is a 200/OK with your data:

My first object!

Enumerate the Container

To see the contents of your container, call GET /[userguid]/[containername].

$ curl "http://localhost:8000/default/default"

Deleting Your First Object

To delete your first object, call DELETE /[userguid]/[containername]/[objectkey]. A simple cURL example is shown here.

$ curl -X DELETE "http://localhost:8000/default/default/firstfile.txt?x-api-key=default"

The response is simply a 200/OK.

Documentation

Please visit our documentation [https://github.com/jchristn/Kvpbase/wiki] for details on APIs, configuration files, deployment scenarios, and more.

Use Cases

Core use cases for Kvpbase Storage Server:

  • Object storage - create, read, update, delete, search objects using HTTP
  • Container storage - create, read, update, delete, search containers using HTTP
  • Primary storage for objects - range read, range write, and append support
  • Scalable storage - multi-node scale-out support using shared backend disk storage
  • Filesystem gateway - RESTful access to existing SAN/DAS (block with filesystem) or NAS (fileshares via CIFS, NFS)

Version History

Refer to CHANGELOG.md for version history.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].