# vesseldb

> VesselDB = Very Simple Serverless Database

Latest version **0.0.1** (published 2016-10-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install vesseldb
pnpm add vesseldb
yarn add vesseldb
bun add vesseldb
```

Provides the command `vessel`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.1 |
| Published | 2016-10-09 |
| First published | 2016-10-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Known vulnerabilities | 0 (+2 in 2 direct dependencies) |
| Install scripts | no |
| Author | Diego Zanon |
| Maintainers | zanon |
| Keywords | key-value, storage, s3 |

## Links

- npm: https://www.npmjs.com/package/vesseldb
- Repository: https://github.com/zanon-io/vesseldb
- Homepage: https://github.com/zanon-io/vesseldb#readme
- Issues: https://github.com/zanon-io/vesseldb/issues
- npm.io page: https://npm.io/package/vesseldb

## Dependencies (8)

- [q](https://npm.io/package/q.md) ^1.4.1
- [retry](https://npm.io/package/retry.md) ^0.9.0
- [lodash](https://npm.io/package/lodash.md) ^4.13.1
- [aws-sdk](https://npm.io/package/aws-sdk.md) ^2.3.15
- [request](https://npm.io/package/request.md) ^2.72.0
- [node-zip](https://npm.io/package/node-zip.md) ^1.1.1
- [commander](https://npm.io/package/commander.md) ^2.9.0
- [random-strings](https://npm.io/package/random-strings.md) 0.0.1

## Alternatives

- [localforage](https://npm.io/package/localforage.md) — 6.2M weekly downloads
- [localforage-observable](https://npm.io/package/localforage-observable.md) — 30.8K weekly downloads
- [@y/y](https://npm.io/package/@y/y.md) — 30.1K weekly downloads
- [@metaobjectsdev/render](https://npm.io/package/@metaobjectsdev/render.md) — 3.5K weekly downloads
- [@ledgerhq/coin-algorand](https://npm.io/package/@ledgerhq/coin-algorand.md) — 1.1K weekly downloads

## Recent versions

- 0.0.1 (latest) — 2016-10-09

## README

# Status: on-hold
Version 1.0 is 50%, but I had to stop due to another personal project.

# VesselDB
VesselDB: **VE**ry **S**imple **SE**rver**L**ess **D**ata**B**ase

VesselDB is a key-value serverless database that uses Amazon S3 for storage and AWS Lambda for the database engine.

What is serverless? It's a concept where the developer doesn't need to worry about servers. Configuring, scaling and making them highly available is a resposibility delegated to the cloud vendor.

Requirements:

1. Scalability
2. High Availability
3. Efficient usage of resources

Why it is efficient? Because the code (database engine) instantiated on-demand and you are billed only by the fractions of seconds that it executes.

## Use Cases

Storing data in any kind (images, docs, JSON, etc.) with a key-value approach.

Examples:
- Session data
- Profile data
- User files
- Processed documents

## Drawbacks

- It's a key-value database.
- Lambda cold start + S3 storage increases its latency.

## Advantages

Why use VesselDB and not Amazon's S3 SDK directly? Because it's easier to use. AWS SDK is more complex.

## Installing

    npm install vesseldb (*not published yet*)

Note: install and configure using Node.js. After deployment, it is accessible from a RESTful API that can be consumed by any programming language.

## Commands

    // require
    var vessel = require('vesselDB');

    // create a database
    vessel.create('instanceName', callback);
    
    // select a instance to use
    vessel.use('bucketName', callback);

    // insert a JSON object
    vessel.insert({ name: "document1" }, callback);

    // insert an array of objects
    vessel.insert([{ name: "documentArray" }], callback);

    // insert a file
    vessel.insert(byteArray, callback);

    // find objects or files
    vessel.find([ids], callback);

    // update
    vessel.update([ids], { name: "document2" }, callback);

    // delete
    vessel.delete([ids], callback);

    // drop the database
    vessel.drop('bucketName', callback);

---
_Source: https://npm.io/package/vesseldb · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
