From 3c7fddd72445bbfa79a90576c20f30fd559e7237 Mon Sep 17 00:00:00 2001 From: Mark Nadal Date: Wed, 14 Jan 2015 13:29:15 -0700 Subject: [PATCH] for Forrest --- gun.js | 1 + index.html | 645 ++++++++++++++++++++++++++++++++++----------- web/img/server.png | Bin 0 -> 8725 bytes web/img/stand.svg | 47 ---- web/time.html | 303 ++++++++++++++++++++- 5 files changed, 775 insertions(+), 221 deletions(-) create mode 100644 web/img/server.png delete mode 100644 web/img/stand.svg diff --git a/gun.js b/gun.js index a66c337c..6eabd0e9 100644 --- a/gun.js +++ b/gun.js @@ -292,6 +292,7 @@ if(Gun.fns.is(gun.__.opt.hooks.key)){ gun.__.opt.hooks.key(key, cb.soul || (cb.node||{_:{}})._[Gun._.soul], function(err, data){ //Gun.log.call(gun, "key made", key); + gun.__.keys[key] = cb.node; // once more for good luck. if(err){ return cb(err) } return cb(null); }); diff --git a/index.html b/index.html index 0e2b17d3..fb55bab1 100644 --- a/index.html +++ b/index.html @@ -1,168 +1,491 @@ + - gun - - - + + + -
-

gun

-

Massively distributed, embedded graph engine.

-

- Gun is a persisted distributed cache, part of a NoDB movement. - It requires zero maintenance and runs on your own infrastructure. - Think of it as "Dropbox for Databases" or a "Self-hosted Firebase". - This is an early preview, so check out the quick demo below and then read on. -

-
- -

- As a reminder, this is running entirely without any database. - Everything gets cached, so your users experience lightning fast response times. - Since gun can be embedded anywhere javascript can run, - that cache can optionally be right inside your user's browser using localstorage fallbacks. - Updates are then pushed up to the servers when the network is available. -

-

- All conflict resolution happens locally in each peer using a deterministic algorithm. - Such that eventual consistency is guaranteed across all writes within the mesh, - with fault tolerant retries built in at each step. - Gun will even automatically use, configure, and optionally install Redis as a cache on your server nodes for you. - Data integrity is now a breeze. -

-

- Gun also establishes and repairs server to server communication across geographically separated machines, - with just the help of an initial IP from you. - It bridges the distance with a realtime connection, - so updates propagate at the speed of the raw pipes linking them. - However each server is intelligent enough to only subscribe to the necessary subsection of your data set that is in its working memory, - keeping things nimble for its connected users. -

-

- Data is then persisted to any S3 like service, - allowing you to save a truly webscale amount of "big data" without breaking your wallet. - Consistency across concurrency is achieved at this layer - by each parallel snapshot going through an idempotent transformation that is agreed upon. - The granularity and frequency of these snapshots can be tweaked by you, - easily tailor fitting it to your data needs and budget concerns. -

-

- In summary, this marks an important progression in web technologies. - Memory is getting cheap enough that we can now front load each connected user's active data - right into the application layer and manipulate it directly. - Networks are fast enough that if we get too many connected users we can just horizontally - redistribute them across different machines. - Conflict resolution algorithms are sophisticated enough to handle things immediately - in the majority of data cases, with the remaining few as transactions performed ontop. -

- This is will be a win for both developers and users, - because it makes things easier to build and faster to respond. - We are excited about this and working hard to finish the first release. -

-

- If you would like to learn more, please let us know... -

-
-

FAQ

-

Why did you build this thing?

-

- 1. I love databases, especially new ones that keep the working set in memory. - But I was horrified to realize that if I use a Database as a Service (DaaS) - then I would have to rely on a network call to get that data, which is horribly slow. - I wanted something faster, and if possible, cheaper - because they start charging you - outrageous prices if you get past their incredibly tiny free tier. -

-

- 2. Hosting your own database is a pain because you have to maintain the hard drives. - Even the basic setup and configuration is nasty... - having to create a bunch of EBS volumes, attaching them, then mounting, formatting, - MDADM and LVM, striping, mirroring, and keeping fstab from locking on boot. - This is ignoring having to figure out how to resize them. - Even with SSDs you have problems that they are bound to one instance and - you get charged for the total volume size, not the amount used. -

-

- I wanted something easy, needing no maintenance and be extremely portable - - allowing me to spin up an ephemeral server anywhere, on any cloud, - and my data "just work" there. -

-

How are you different from every other database that is trying to reinvent the wheel?

-

- 1. Because gun is not a database (NoDB), it is a persisted distributed cache. - The fatal flaw with databases is that they assume some centralized authority. - While this may be the case initially when you are small, - it always ceases to be true when you become large enough that concurrency is unavoidable. - No amount of leader election and consensus algorithms can patch this - without facing an unjustified amount of complexity. - Gun resolves all this by biting the bullet - - it solves the hard problems first, not last. - It gets data synchronization and conflict resolution right from the beginning, - so it never has to rely on vulnerable leader election or consensus locking. -

-

- 2. Plus it embeds directly into your application, - so you can do your own custom queries with just pure programming logic. - Meaning you never have to learn some silly separate query language again. - A query language which just attempts to be some DSL to RPC another machine - into doing the same query you could have already written in half the time - it took to learn the query language. Because face it, any sufficiently capable - query language has to be Turing complete, and at that point - - why aren't you just writing your entire application logic in it? - Your app is nothing without your data. -

-
- - + @media (max-width: 1279px) { + .wide { + display: none; + } + } + + +
+ +
+ +
+ + + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ + Distributed embedded graph database engine. The no pain, no cost, no backend, NoDB database, gun. +
+
+ +
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + Distributed embedded graph database engine. The no pain, no cost, no backend, NoDB database, gun. +
+ + + +
+
Easiest Database Ever
+
Sync state in a cinch at a distributed system scale.
+
+ +
+ +
+ Fork me on GitHub + + + + + +
+

The blog that started it all...

+

+ Gun is a persisted distributed cache, part of a NoDB movement. + It requires zero maintenance and runs on your own infrastructure. + Think of it as "Dropbox for Databases" or a "Self-hosted Firebase". + This is an early preview, so check out the github and read on. +

+

+ Everything gets cached, so your users experience lightning fast response times. + Since gun can be embedded anywhere javascript can run, + that cache can optionally be right inside your user's browser using localstorage fallbacks. + Updates are then pushed up to the servers when the network is available. +

+

+ All conflict resolution happens locally in each peer using a deterministic algorithm. + Such that eventual consistency is guaranteed across all writes within the mesh, + with fault tolerant retries built in at each step. Data integrity is now a breeze. +

+

+ Gun also establishes and repairs server to server communication across geographically separated machines, + with just the help of an initial IP from you. + It bridges the distance with a realtime connection, + so updates propagate at the speed of the raw pipes linking them. + However each server is intelligent enough to only subscribe to the necessary subsection of your data set that is in its working memory, + keeping things nimble for its connected users. +

+

+ Data is then persisted to any S3 like service, + allowing you to save a truly webscale amount of "big data" without breaking your wallet. + Consistency across concurrency is achieved at this layer + by each parallel snapshot going through an idempotent transformation that is agreed upon. + The granularity and frequency of these snapshots can be tweaked by you, + easily tailor fitting it to your data needs and budget concerns. +

+

+ In summary, this marks an important progression in web technologies. + Memory is getting cheap enough that we can now front load each connected user's active data + right into the application layer and manipulate it directly. + Networks are fast enough that if we get too many connected users we can just horizontally + redistribute them across different machines. + Conflict resolution algorithms are sophisticated enough to handle things immediately + in the majority of data cases, with the remaining few as transactions performed ontop. +

+ This is will be a win for both developers and users, + because it makes things easier to build and faster to respond. + We are excited about this and working hard to finish the first release. +

+

+ If you would like to learn more, email hi@gunDB.io - + or join the Google Group. + Plus we're hiring, so contact us! +

+

FAQ

+

Why did you build this thing?

+

+ 1. I love databases, especially new ones that keep the working set in memory. + But I was horrified to realize that if I use a Database as a Service (DaaS) + then I would have to rely on a network call to get that data, which is horribly slow. + I wanted something faster, and if possible, cheaper - because they start charging you + outrageous prices if you get past their incredibly tiny free tier. +

+

+ 2. Hosting your own database is a pain because you have to maintain the hard drives. + Even the basic setup and configuration is nasty... + having to create a bunch of EBS volumes, attaching them, then mounting, formatting, + MDADM and LVM, striping, mirroring, and keeping fstab from locking on boot. + This is ignoring having to figure out how to resize them. + Even with SSDs you have problems that they are bound to one instance and + you get charged for the total volume size, not the amount used. +

+

+ I wanted something easy, needing no maintenance and be extremely portable + - allowing me to spin up an ephemeral server anywhere, on any cloud, + and my data "just work" there. +

+

How are you different from every other database that is trying to reinvent the wheel?

+

+ 1. Because gun is not a database (NoDB), it is a persisted distributed cache. + The fatal flaw with databases is that they assume some centralized authority. + While this may be the case initially when you are small, + it always ceases to be true when you become large enough that concurrency is unavoidable. + No amount of leader election and consensus algorithms can patch this + without facing an unjustified amount of complexity. + Gun resolves all this by biting the bullet - + it solves the hard problems first, not last. + It gets data synchronization and conflict resolution right from the beginning, + so it never has to rely on vulnerable leader election or consensus locking. +

+

+ 2. Plus it embeds directly into your application, + so you can do your own custom queries with just pure programming logic. + Meaning you never have to learn some silly separate query language again. + A query language which just attempts to be some DSL to RPC another machine + into doing the same query you could have already written in half the time + it took to learn the query language. Because face it, any sufficiently capable + query language has to be Turing complete, and at that point - + why aren't you just writing your entire application logic in it? + Your app is nothing without your data. +

+
+ + + + - \ No newline at end of file + diff --git a/web/img/server.png b/web/img/server.png new file mode 100644 index 0000000000000000000000000000000000000000..8ceca21c695ac691bcfcc6672cfda23f48452835 GIT binary patch literal 8725 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 literal 0 HcmV?d00001 diff --git a/web/img/stand.svg b/web/img/stand.svg deleted file mode 100644 index e64fdadd..00000000 --- a/web/img/stand.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - diff --git a/web/time.html b/web/time.html index 8dfec938..00fa8729 100644 --- a/web/time.html +++ b/web/time.html @@ -3,15 +3,20 @@ + -
-
-
-
+
+ +
+ +
+ + + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ + Distributed embedded graph database engine. The no pain, no cost, no backend, NoDB database, gun. +
+
+ +
+
+
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
-
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ + Distributed embedded graph database engine. The no pain, no cost, no backend, NoDB database, gun.
-
+ + +
+
Easiest Database Ever
+
Sync state in a cinch at a distributed system scale.
+
+ +
+ +
+ +
AWESOME SAUCE COLOR SYNCING
- -
-

Easiest . Database . Ever

-

Scale without pain, because it is decentralized.

-
As easy as 1, 2, 3! @@ -224,6 +500,7 @@ gun.load('my/first/data', function(err, data){ } }); - Fork me on GitHub +
+Fork me on GitHub