On Sat, Jul 28, 2012 at 4:39 PM, Vinicius Melo <
vinic...@gmail.com> wrote:
> Hello Developers and Team from Redis,
>
> We are building a product that will be a free social platform intended for
> knowledge exchange.
Like Quora? Stack Exchange? Facebook questions? Yahoo answers? Reddit AMA? ...?
> We have used the following databases together to deal with our problems:
So it's already implemented, and you're asking our advice after it's done?
> - Users - DynamoDB
It doesn't matter where you store your user database, as long as it's
in a database. You'd also be fine with PostgreSQL, MySQL, or any other
database that can store data on a disk somewhere for subsequent
reading, atomic writes/updates, etc.
> - Content and Search - ElasticSearch (lucene)
Unless Amazon messed this up severely, this will probably work fine.
> - Complicated machine learning processing, and custom algorithms - Redis
>
> What do you think about it ? Which problems could we have with perfomance,
> scalability and availability?
Redis won't offer you much for machine learning. If you're looking to
gather statistics, calculate co-visitation, ..., Redis would work
fine.
But if you're looking to perform "complicated machine learning
processing", then Redis is not the tool for you. Most machine learning
techniques rely on large matrix multiplication and/or linear
optimization, neither of which can be done efficiently with Redis.
With Redis, you are reading/writing data with a round-trip to a remote
server, which means reading/writing 100k-1M items/second (or 25k-250k
from a single client) against a single server. You won't get any
optimized algorithms for free, which means that you will not be doing
anything "complicated" with any volume of real data.
You are better off using one of the available libraries in your
language of choice, or implementing them yourself, which will let you
read/write 1B+ items/second (main memory is so much faster than a
network roundtrip), use optimized algorithms (improving the big-O
runtime), and could let you use pre-existing known-good implementation
of these algorithms.
Regards,
- Josiah