Comparing version 0.1.9 to 0.1.10
@@ -21,3 +21,4 @@ var keydb = require('./lib/keydb'); | ||
keydb.driver('buffer', require('./lib/drivers/buffer')); | ||
keydb.driver('s3', require('./lib/drivers/s3')); | ||
module.exports = keydb; | ||
module.exports = keydb; |
{ | ||
"name": "keydb", | ||
"version": "0.1.9", | ||
"version": "0.1.10", | ||
"description": "Key/value data/query API to use on the server and in the browser.", | ||
@@ -5,0 +5,0 @@ "main": "index-server.js", |
@@ -6,4 +6,19 @@ keydb | ||
Build data APIs using the middleware concept. | ||
KeyDB is generic middleware for data. | ||
KeyDB provides the tools to create *somewhat* consistent read/write APIs to | ||
heterogenous data sources. The key word here is *somewhat*. KeyDB does not | ||
attempt to completely paper over the semantic differences of all possible data | ||
sources. Instead, it uses the middleware concept to have low level "sources" | ||
that speak the native semantics of a physical data source and higher level | ||
"drivers" that massage those semantics into more consistent APIs. | ||
The "key" in KeyDB refers to the desire to use key/value semantics as much as | ||
possible for reasons of performance, simplicity, and because it's usually a | ||
common denominator across data sources. | ||
An original goal of KeyDB was to provide consistent data APIs across client and | ||
server. For example, local storage and MySQL. Currently, the focus is on server | ||
APIs, but hopefully the original intent will be revisited in the future. | ||
## Installation | ||
@@ -17,4 +32,4 @@ | ||
By default, KeyDB is a middleware stack that does nothing. At a minimum, you | ||
must provide it with a data source. A data source is just a function that | ||
By default, KeyDB is a middleware stack that does almost nothing. At a minimum, | ||
you must provide it with a data source. A data source is just a function that | ||
returns data. | ||
@@ -36,4 +51,7 @@ | ||
The above database will simply echo the message sent to it. That's not very | ||
useful. To do something more useful, use the included drivers. | ||
The above database will simply echo the message sent to it. Note that KeyDB | ||
does automatically wrap synchronous data sources in a promise API. This is the | ||
default behavior because it is possible to make synchronouse APIs asynchronous, | ||
but it is impossible to make asynchronous APIs synchronous. Some drivers take | ||
a synchronous option, including the default stack driver. For example: | ||
@@ -43,2 +61,17 @@ ```js | ||
var db = keydb({sync: true}); | ||
db.source(function (msg) { | ||
return msg; | ||
}); | ||
console.log(db("Hello, world")); | ||
``` | ||
Of course, the above data sources aren't very useful. To do something more | ||
useful, use the included drivers. | ||
```js | ||
var keydb = require('keydb'); | ||
var db = keydb(); | ||
@@ -87,6 +120,10 @@ | ||
that upsert semantics can be added to mysql without the underlying driver | ||
actually supporting upsert. | ||
actually supporting upsert. (Of course, MySQL does directly provide some | ||
upsert capabilities. Just pretend it doesn't.) This demonstrates the philosophy | ||
and use of middleware in KeyDB. Each source and driver does only what it needs | ||
to do. Other features are added by stacking drivers together, rather than | ||
making monolithic data sources or drivers. | ||
Some drivers are preconfigured stacks, and these can be easily created by their | ||
IDs. They may also add sugar methods. | ||
names. They may also add sugar methods. | ||
@@ -93,0 +130,0 @@ ```js |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
85903
42
2536
147
14