I would think that either MySQL or PostgreSQL would work well with any
application. PostgreSQL's commercial support is cheaper than MySQL's, plus
PostgreSQL 9.1 will include support for
SQL/MED<http://rhaas.blogspot.com/2011/01/why-sqlmed-is-cool.html>
allowing
you to register tables other databases as linked tables (provided someone
has written a driver).

The downside to PostgreSQL is that it's somewhat convoluted. There are a lot
of bells and whistles to use for tuning it, but that just means that you can
tune PostgreSQL for your exact workload. I'm not familiar enough with MySQL
to say one way or the other about bells and whistles for tuning.

You could test to see how well the key filtering aspects of Riak help you
out. You only need to add the map phase and, as it's in memory, it's pretty
quick.

It might be worth making a list of all of the queries for your application
and determining how to model your data to answer those questions.

Jeremiah Peschka
Microsoft SQL Server MVP
MCITP: Database Developer, DBA


On Sun, Jan 23, 2011 at 1:17 PM, Mojito Sorbet <mojitot...@gmail.com> wrote:

> My application (which is entirely written in Erlang/OTP) stores large
> blobs (20K - 250K bytes) in Riak, and the most common access, which has
> to be fast, is retrieval of a single record by key.  Ok, that's a good
> match.  And it can scale up to the millions/billions of records I want.
>
> But there are other access patterns that really need some relational
> concepts for organizing and managing these blobs according to various
> metadata.  These queries are used by interactive web pages and so
> map-reduce is not appropriate - doing entire table scans just to find
> the 1000 blob records that belong to one 'account' is going to put too
> much load on the riak nodes and thus interfere with the primary queries.
>
> I thought of having a bucket-per-account, with the data portion holding
> keys into the main part of the store, but since behind the scenes the
> query "get all the keys in this bucket" is doing a full map-reduce, I
> run into the same problem.   And "find all the objects for this account"
> is not the only query that will turn up; "List all accounts" would be
> another one, for exmaple.  I am not sure running a second riak cluster
> just for the metadata is any help.
>
> So I thought, let Riak do what Riak is good at, and use a relational
> database for fast queries of metadata.  But which one?  The alternatives
> seem to be MySQL and PostgreSQL.  Are there any recommendations on which
> one works best with a distributed OTP Erlang app?
>
>
>
> _______________________________________________
> riak-users mailing list
> riak-users@lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to