+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.

Reply via email to