gundb / feature-requests

What extra features do you want for gun? Discuss here!
10 stars 0 forks source link

Ideal DB #20

Open metasean opened 8 years ago

metasean commented 8 years ago

gitter conversation - meat of the discussion starts at https://gitter.im/amark/gun?at=56abb0526b6468374a0a52e2 and continues well past https://gitter.im/amark/gun?at=56abbef9c54bc2bf180cdca2

merarischroeder commented 5 years ago

Copy-paste from gitter

nawfalhasan @nawfalhasan Jan 30 2016 06:35 Features I really would like to have:

Built-in sync module/protocol with both p2p and master/slave option (I once did a p2p syncing for MySQLs. While the architecting something complex was enjoyable on a technical perspective, I dont want for the life of me or anyone do it another time)

Push based architecture (this is only for technical merit and my interest in it, not that I have ever developed an app which found constant polling a bottleneck. Big fan of reactive systems in general)

Composable, chainable query language (I dont know how exactly a query language decoupled and independent from host platform should look like but I thoroughly enjoyed LINQ with C#. Big fan of strong typing and strong querying :P)

Embedded option from the db vendor - this is big for me. How often you want local storage for a web app that's meant to work offline too? Same goes for today's desktop and mobile apps. So far I have found Couchbase which has Couchbase Lite, CouchDB + PouchDB (assuming it runs on Node.js), Cloudant with Cloundat Sync.

In-memory option (would be great if db can cache frequentky used data, some sort of auto-caching like Couchbase does)

Written in a fast language (runtime I mean. Are dynamic languages really good enough for this? May be yes? But this is a religious war more than anything)

Transaction support

Schema-less (I like to enforce it at code-level but I understand the counter arguments)

Support for both eventual and strong consistency (in the sense I should be able to configure in the beginning which model I will be using. I find little value in switching to a completely new db just for a different consistency pattern)

Cross-platform

Lucene like full text search

Optional (would be nice to have):

HTTP query method

Append-only writes (if you have only non destructive writes as opposed to updated and deletes it's easier for developer to present snapshots at any given time. Say I am displaying points earned by teams in a season, what if a user wants to see the league table at 15th week? This is doable, but append-only writes make it easier. Datomic does this. I know the downsides too. May be it should be configurable!)

Scalable, distributable, concurrent bla bla (I dont even get the concepts properly to be honest)

Should support analytics, BI, ETL, bla bla (am I pushing too much? :))

Always loved object databases where you can just save your object as such and retrieve as such. Is it possible with graph databases? Actually torn between Document, Object, Graph and Relational. I can see mertit foreach.. May be there is a better middle ground?

nawfalhasan commented 5 years ago

Author here. Nice to see this. What's up? :)

I dont think whatever I have mentioned is within the scope of Gun