<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">HI,<div class=""><br class=""></div><div class="">Thank you all for your replies.</div><div class=""><br class=""></div><div class="">Nathaniel: The reads must be 'eventually' consistent, at least within a second. The problem is that it updates user connection information, and they will be unable to connect if our read does not get information from the write. So if we update, the connection before the write is fully committed will fail. I suppose it is ok if they cannot connect and just have to reconnect, but ideally they should be able to connect every time.</div><div class=""><br class=""></div><div class="">So Riak seems like a great solution, but speed wise really worries me. We are trying to connect as many clients as possible per server, this is very important as it saves us money. If the reads take 2-3x as long, this could be very slow and bad. According to this article: <a href="https://github.com/citrusbyte/redis-comparison" class="">https://github.com/citrusbyte/redis-comparison</a>, Riak is up to 10x slower than Redis. This would really hurt our operations.</div><div class=""><br class=""></div><div class="">To those who commented redis-cluster, my problem with a cluster solution is that redis-cluster seemed to be in an experimental stage. It also has the problem where if all copies of a node die, then the cluster will lose all that data and it is up to the user to not lose that data. All of this has to be handled by the user, and this seems like it will get tedious when there are multiple nodes and all it would take is for one admin to mess it up.</div><div class=""><br class=""></div><div class="">So this is where Aerospike comes in. Reading about them on the web they come off as the perfect tool for a version of redis that is distributed: <a href="https://stackoverflow.com/questions/24482337/how-is-aerospike-different-from-other-key-value-nosql-databases" class="">https://stackoverflow.com/questions/24482337/how-is-aerospike-different-from-other-key-value-nosql-databases</a> . But for some reason, they don’t get as much attention as redis</div><div class=""><br class=""></div><div class="">Does anyone have experience with Aerospike? For my application, it seems like a no brainer.</div><div class=""><br class=""></div><div class="">Thank you all again,</div><div class=""><div><blockquote type="cite" class=""><div class="">On Sep 15, 2017, at 2:02 PM, Nathaniel Waisbrot <<a href="mailto:nathaniel@waisbrot.net" class="">nathaniel@waisbrot.net</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Scatter-shot reply:</div><div class=""><br class=""></div><div class="">Since you're using Redis right now, have you considered Redis Cluster (<a href="https://redis.io/topics/cluster-tutorial" class="">https://redis.io/topics/cluster-tutorial</a>)?</div><div class=""><br class=""></div><div class="">I'm using Cassandra and don't feel that it's got a small community or slow pace of updates. There are a lot of NoSQL databases and they all have quite different tradeoffs which tends to fragment the community, so your expectations may be too high.</div><div class=""><br class=""></div><div class="">Riak, ElasticSearch, EtcD, MongoDB, etc. You have many (too many!) options. When you say "read speed and consistency" what sort of consistency are you looking for? Is eventual consistency good, or do you require that every read that takes place after a write gets the new data?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Sep 15, 2017, at 12:43 PM, code wiget <<a href="mailto:codewiget95@gmail.com" class="">codewiget95@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hello everyone,<div class=""><br class=""></div><div class="">I am at the point where I have many Erlang nodes, and I am going to have to move to a distributed database. Right now, I am using a basic setup: each Erlang node has a copy of the same Redis DB, and all of those DBs are slaves(non-writable copies) of a master. A big problem with this is obvious - If the db goes down, the node goes down. If the master goes down, the slaves won’t get updated, so I would like to move to a distributed db that all of my nodes can read/write to that can not/does not go down.</div><div class=""><br class=""></div><div class="">The nodes do ~50 reads per write, and are constantly reading, so read speed and consistency is my real concern. I believe this will be the node’s main speed factor.</div><div class=""><br class=""></div><div class="">Another thing is that all of my data is key/key/value , so it would mimic the structure of ID -> name -> “Fred”, ID->age->20, so I don’t need a SQL DB.</div><div class=""><br class=""></div><div class="">A big thing also is that I don’t need disc copies, as a I have a large backup store where the values are generated from.</div><div class=""><br class=""></div><div class="">I have looked at as many options as I can -></div><div class=""><br class=""></div><div class="">Voldemort : <a href="http://project-voldemort.com/" class="">http://project-voldemort.com/</a> </div><div class="">- looks perfect, but there are 0 resources on learning how to use it outside of their docs and no Erlang driver, which is huge because I would both have to learn how to write a c driver and everything about this just to get it to work. </div><div class=""><br class=""></div><div class="">Cassandra: <a href="http://cassandra.apache.org/" class="">http://cassandra.apache.org/</a></div><div class="">- looks good too, but apparently there is a small community and apparently isn’t updated often</div><div class=""><br class=""></div><div class="">Scalaris: <a href="https://github.com/scalaris-team/scalaris/blob/master/user-dev-guide/main.pdf" class="">https://github.com/scalaris-team/scalaris/blob/master/user-dev-guide/main.pdf</a></div><div class="">- Looks very very cool, seems great, but there is 0 active community and their GitHub isn’t updated often. This is a distributed all in-memory database, written in Erlang.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">So from my research, which consisted heavily of this blog:<a href="https://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores" class="">https://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores</a> , I have narrowed it down to these three.</div><div class=""><br class=""></div><div class="">BUT you are all the real experts and have built huge applications in Erlang, what do you use? What do you have experience in that performs well with Erlang nodes spread across multiple machines and possibly multiple data centers?</div><div class=""><br class=""></div><div class="">Thanks for your time.</div><div class=""><br class=""></div></div>_______________________________________________<br class="">erlang-questions mailing list<br class=""><a href="mailto:erlang-questions@erlang.org" class="">erlang-questions@erlang.org</a><br class=""><a href="http://erlang.org/mailman/listinfo/erlang-questions" class="">http://erlang.org/mailman/listinfo/erlang-questions</a><br class=""></div></blockquote></div><br class=""></div></div></blockquote></div><br class=""></div></body></html>