+1
On Thu, Aug 29, 2013 at 5:17 AM, Tom Ashworth <t...@phuu.net> wrote: > When picking a database, I think it's a bad idea to start by looking at > all the databases available to you and comparing their features. That's > like comparing all the vehicles available to you for a trap, picking a > supersonic jet because of its speed, when all you needed was a bike to > cycle 5 minutes down the road. > > All these databases, key-value stores and search engines are built to > solve different problems, and without a problem to solve you can't make an > informed decision. Working from the problem to a tools that can fix it is > the only way to find the right data store. > > Here's some examples... > > You're building a javascript-heavy website that needs to work offline and > on mobile. > This problem suggests that you need the following attributes: > - good syncing & conflict resolution support, because changes can be > made offline; > - if possible, a client-side version so that you can use the same data > storage API whether online or offline; > - real-time event support, so that you can, for example, show > notification to your users when another user makes a change to some data. > What might you pick in this scenario? CouchDB is the obvious choice, as at > its core it's about syncing and replication, and you can transparently > support offline usage with the client-side implementation, PouchDB. > > You're building a web application where user's interactions are minimal > but you serve alot of data, and the data you provide has a clear hierarchy: > This suggests: > - good support for relations between data, to allow you to turn raw data > into data structures on the database side > - transaction support, where you can batch together a set of operations > to make sure you can rollback if something goes wrong > - redundancy, where every write you make can also be made in other > places so that, if you master database falls over, you can quickly restore > access > In this case, you could pick something like PostgreSQL or MySQL (yep, > still a good option). Mongo also wouldn't be a bad option, although its > (lack of) transaction support has had me quite frustrated recently. > > To quickly cover some other things you mention: > ElasticSearch isn't a database as such – it's an engine for searching your > data. If you need to provide search over a ton of data, take a look at it. > MongoDB is a document storage engine, and is generally useful, reliable > and easy to set up. > Redis, LevelDB and other key-value data stores do not offer, natively, > support for storing and manipulating data structures because they are just > key and value stores. But, as Mikeal said, there's a community around Level > (and probably Redis) that's adding these things on top – and in that sense > you can 'build your own database'. > I don't know anything about RethinkDB - at a cursory glance, it doesn't > look like they've rethought much, and it's a young platform so don't expect > every problem you come up with to be Googleable. You only get that with > mature systems like MySQL, Postgres - but Mongo and Couch are catching up > in this area. Both have active and helpful communities, like Node does. > > On the hosted/self-hosted question – I personally go for hosted databases > where the problem suggests it. I'm not an operations guy and I don't know > about database system administration. I'm a developer, and I'm concerned > with the application logic – keeping a database running, and running fast, > is just a distraction. However, if you're working in a team and have > servers (& ops people) available, there are good reasons to go for a > self-hosted option. > > As you can tell, there's a lot to picking a data store – but I think one > thing's for sure: you have to base a decision on your particular problem. > > Cheers, > Tom > > On Wednesday, August 28, 2013 6:14:57 PM UTC+1, Dylan Hassinger wrote: > >> These posts really cleared it up for me. Cool stuff. Thank you so much!! >> >> >> On Wed, Aug 28, 2013 at 1:12 PM, Mikeal Rogers <mikeal...@gmail.com>wrote: >> >>> I would phrase this differently. As you write your own database using >>> node.js and LevelDB you can host it pretty much anywhere that you can run a >>> node.js program. Its deployment and management is identical to how you >>> manage your node.js application. This means that you avoid most of the pain >>> that goes with running infrastructure, like traditional databases, and it >>> means you don't really need/want specialized "database hosting." >>> >>> On Aug 28, 2013, at 7:37AM, vladimir....@gmail.com wrote: >>> >>> so there there is no such thing as hosted LevelDB >>> >>> >>> -- >>> -- >>> Job Board: http://jobs.nodejs.org/ >>> Posting guidelines: https://github.com/joyent/**node/wiki/Mailing-List-* >>> *Posting-Guidelines<https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines> >>> You received this message because you are subscribed to the Google >>> Groups "nodejs" group. >>> To post to this group, send email to nod...@googlegroups.com >>> >>> To unsubscribe from this group, send email to >>> nodejs+un...@**googlegroups.com >>> >>> For more options, visit this group at >>> http://groups.google.com/**group/nodejs?hl=en?hl=en<http://groups.google.com/group/nodejs?hl=en?hl=en> >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "nodejs" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to nodejs+un...@**googlegroups.com. >>> >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>> . >>> >> >> -- > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to nodejs@googlegroups.com > To unsubscribe from this group, send email to > nodejs+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to nodejs+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.