scattered-store
Advanced tools
Comparing version 0.1.3 to 0.1.4
@@ -13,3 +13,3 @@ "use strict"; | ||
var dateParser = function (key, value) { | ||
var reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/; | ||
var reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d{3})Z$/; | ||
if (typeof value === 'string') { | ||
@@ -16,0 +16,0 @@ if (reISO.exec(value)) { |
{ | ||
"name": "scattered-store", | ||
"description": "Key-value store for large datasets", | ||
"version": "0.1.3", | ||
"version": "0.1.4", | ||
"author": "Jakub Szwacz <jakub@szwacz.com>", | ||
@@ -18,7 +18,7 @@ "keywords": [ | ||
"devDependencies": { | ||
"jasmine-node": "1.14.x", | ||
"jasmine": "^2.1.0", | ||
"underscore": "^1.7.0" | ||
}, | ||
"scripts": { | ||
"test": "node_modules/.bin/jasmine-node spec", | ||
"test": "node_modules/.bin/jasmine", | ||
"benchmark": "node benchmark/benchmark" | ||
@@ -25,0 +25,0 @@ }, |
@@ -6,3 +6,10 @@ scattered-store | ||
### In what cases can it be useful? | ||
- For some reason you can't or don't want to use serious database engine. | ||
- For archiving data (you have a lot of rarely accessed data). | ||
### How much data can it handle? | ||
I would draw the line of sanity around 10M items in store, and max size of one item around 10MB. However only your disk size and used file system are real limitations. | ||
# Way of storing data | ||
@@ -27,11 +34,11 @@ | ||
## Pros | ||
Every entry is stored in separate file what means: | ||
### Pros | ||
Every entry is stored in separate file what means... | ||
* Implementation is very, very simple. All heavy lifting is done by file system. | ||
* Dataset can safely grow to ridiculous size. | ||
* Quite linear performance with growing dataset. | ||
## Cons | ||
Every entry is stored in separate file what means: | ||
### Cons | ||
Every entry is stored in separate file what means... | ||
* If the entry is 10 bytes of data, it still occupies whole block on disk. | ||
* Every operation is a separate I/O. Not much room for performance improvements with bulk tasks. | ||
* Every operation is performed as separate I/O. Can't speed things up very much with bulk inserts or reads. | ||
@@ -52,4 +59,6 @@ | ||
var store = scatteredStore.create('path/to/my/store', function (err) { | ||
// This is optional callback function so you can know | ||
// when the initialization is done. | ||
if (err) { | ||
// Oops! Something went wrong with initialization. | ||
// Oops! Something went wrong. | ||
} else { | ||
@@ -60,4 +69,4 @@ // Initialization done! | ||
// You don't have to wait for initialization to be done before calling API methods. | ||
// All calls will be queued and delayed until initialization is ready. | ||
// You don't have to wait for initialization to end before calling API methods. | ||
// All calls will be queued and delayed automatically. | ||
store.set('abc', 'Hello World!') | ||
@@ -92,4 +101,4 @@ .then(function () { | ||
## get(key) | ||
Returns value stored on given `key`. If given `key` doesn't exist in database `null` is returned. | ||
**Returns:** promise which when resolved returns value | ||
Returns value stored on given `key`. If given `key` doesn't exist `null` is returned. | ||
**Returns:** promise | ||
@@ -116,3 +125,3 @@ ```js | ||
stream.on('end', function () { | ||
// All entries you asked for has been delivered. | ||
// All entries you asked for had been delivered. | ||
}); | ||
@@ -119,0 +128,0 @@ ``` |
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
43511
16
1065
194