It's been six days since I've announced my Public Hivemind SQL service proposal. Meanwhile, I've been thinking about the best possible scenarios to expose Hivemind's internal database.
After advising some of my DevOps friends, the initial technical plan started shaping up.
PostgreSQL user accounts for each person/project
Instead of using one big anonymous, public account I'm considering to create a different database user for each personality/project. PostgreSQL can scale millions of users in a single server.
The rationale behind creating a user for each consumer is to understand user behavior and network saturation. The user creation process will be a simple web application that you can log in with Steemconnect and grab your credentials.
Maybe requiring at least N+ SP in the account might be helpful to incentivize powering up. I don't see anything huge on that limit, something like a minimum 100 SP limit looks fair.
Connection pooling and load balancing
PgBouncer, is a lightweight connection pooler for the PostgreSQL, will be used for the connection pooling. HaProxy will route the requests from pgBouncer to replica sets. Routing will be round-robin in general, however, on special cases, we may have exceptions.
For example, let's say @steempeak wanted to use this DB and started using extensively, then I might have a choice to allocate one replica instance to @steempeak while other users sharing other replica instances.
The initial cluster is designed like this. I will start with one master and three replica instances where clients routed through PgBouncer and HaProxy.
All replicas will be read-only while the master instance will be feeding the replicas as new blocks produced in the STEEM network. Of course, this is not a %100 high-availability setup, however, I think it's a good setup to start with and experiment.
Vote for the proposal
So far, the proposal gained around 9m SP support. This is huge but it's not enough. It needs around 12.8+ M SP support to pass the gtg's refund proposal and start getting funds.
The funding window will start in three days. If you feel this project might be helpful for the ecosystem, consider casting a proposal vote.