I had wanted to post this as a continuation of my previous thread, but
apparently Google Groups doesn't allow you to reply to old threads?
It has been a while; I am happy to report that I am approaching a
launch-ready version of my site based on Terrastore. The past few
months have been primarily focused on elements not immediately related
to Terrastore. But as I reach a point where a production deployment
is near--perhaps two months away or thereabouts--I return to these
I am prepared to take a gamble with running Terrastore in a production
environment. I feel I have taken adequate precaution by implementing
connectivity failure detection, a caching layer, an automated backup
agent, and some alerting mechanisms (I won't be able to keep a
watchful eye on the system at all hours of the day). However, I still
feel a little at odds with Terracotta, and not so much Terrastore
specifically. Although I've sifted through the Terracotta
documentation, it remains quite opaque to me--the documentation does
not appear to directly address my questions.
Most notably, I am very nervous about the apparent uncontrolled growth
of the objectdb. Dropping and recreating Terrastore buckets routinely
during development has lead to a great deal of presumably
unnecessary .jdb files in the tc-data/objectdb directory with date
stamps reaching all the way back to the start of my project. I don't
know how to force these to be garbage collected, if only for the peace
of mind that they will not continue to grow until they consume the
entire storage system. :) I also don't know if their persistence will
cause my Terracotta servers to eventually suffer performance
degradation, which would be particularly frustrating if it were caused
in part by data that my application had "deleted."
I also have not yet found the time to exercise the Terracotta
clustering to observe its real-world behavior when the master goes
offline, the slave takes over, and then the master is restored. By
contrast, in development, I have routinely started and stopped
multiple Terrastore servers so I know that those join and exit their
cluster fairly smoothly.
I expect my site to see very little traffic but nevertheless I want it
to be as solid as possible within reason. I plan to deploy a master-
slave Terracotta server and two Terrastore instances, one of each on
two physical servers with 32GB of memory (considerably more than
necessary for my application).
How much pain am I in store for if I deploy v0.81 to production now?
Will 0.82 incur some substantial changes? In theory, even if I need
to reinstall Terracotta and Terrastore, I should be able to restore my
data from my bucket().backup() files. Right? I was a tiny bit
alarmed that the files were not explicitly human-readable JSON. They
are approximately human-readable, but I believe they have been very
slightly serialized; no?
To put a fine point on it: if I decide that for whatever reason a
pre-1.0 Terrastore is unworkable for me, I will need to write my own
export functionality to get the data out in a plain JSON form. Or am
I missing something? (Note: I don't plan to give up on Terrastore
very easily! I really like it. I'd have to be in a desperate
situation where I've lost data and can't blame myself.)
Finally, I again solicit anyone who has done a production Terracotta/
Terrastore environment to share any best practices or lessons
learned. I hope to do the same once I'm into the thick of it myself.