I created the AWS Application https://www.fansrave.com It uses 2 instances of Amazon’s version of MySQL - a Read-Write instance which we change and a read-only instance which is refreshed automatically from the R/W as data change. This serves as a live backup. Performance is fine, but we are hoping that we will grow enough that it will no longer be sufficient.
The thought would be to replace the R/W instance of MySQL with something that runs out of RAM. We’ve looked at AWS implementation of memcacache but that would be a painful change to our software. A RAM SQL engine would minimize software changes and be a lot easier to field and to maintain.
AWS spins up additional instances of our application as needed by load. The plan would be for some number of our instances to share a memory database instance with all changes being fed to the MySQL read-only instance as non-volatile backup.
-
Does that make sense?
-
Have you defined and tested a configuration which would use AWS memory to store your database? Or would that be too exotic?
-
Your literature suggests that we could add additional instances of memsql as needed as load increased. Could that also be done automatically? If we had more than one, how would our application instances find one? Service discovery?
-
Establishing a JDBC MySQL connection takes significant time. We maintain connection pools in Tomcat. Is the overhead of establishing a memsql connection enough less that we would not need a connection pool? That is, could we establish a session-duration connection for each user interaction?
-
MySQl connections impose significant load on the database engine. How many connections can you support? I realize that the answer is “it all depends;” I am addressing the configuration I’m describing.
-
You will note that our main page shows view counts for each deal. Each instance accumulates count changes in its memory and then adds the total update count to the related MySQL row once per minute. The idea is to minimize count update requests. We assume that memsql supports ACID to the degree that a flurry of simultaneous increment instructions would be executed properly.
If what we want to do doesn’t seem ridiculous, I’ll want to know more about pricing and the degree to which you’re a subset of MySQL. We tried HARD not to use anything exotic in our SQL, but one never knows…