Citus 6.2: Concurrent index creation and complex queries for multi-tenant dbs
citusdata.com
citusdata.com
In particular, the added ability to run `CREATE INDEX CONCURRENTLY` [1] for distributed tables is an important addition. I've run a pretty big Postgres database before, and this feature is absolutely _critical_ for bringing new indexes online for large tables without affecting users or other operations (without it, `CREATE INDEX` needs a lock that blocks other modifications in the table).
Its reverse, `DROP INDEX CONCURRENTLY` is a relatively newer addition to Postgres and also pretty key. While running on pre-9.2 (when it was added), we had to stop dropping indexes from large tables because the operation would block long enough that we'd start timing out user requests while it was running.
[1] https://www.postgresql.org/docs/current/static/sql-createind...
Furthermore, I think Citus has a head start on being a mature project, since it builds upon the back of the already-mature Postgres for things like query planning.
[1] https://blog.bradfieldcs.com/you-are-not-google-84912cf44afb
Bravo!
> Good software never stops evolving
I think I would translate this as: "our software is so large in scope, it must never stop evolving if it is to remain good enough."
Small software, with a single, focused goal, can evolve to a steady state which is still good.
Often we need to build things whose scope is too large for that, and must constantly churn. That's ok. But ideally you are finding parts of your work which can be sent in the opposite direction: towards God; or the oneness of all things.
If none of your work ever seems to find a path towards simplicity and oneness, it's possible you are pathologically mixing concerns, which, if true, is probably slowing you down.
Do you have a concrete criticism of Citus? Do you believe a database system can become your definition of "God", or are large database systems simply not necessary and could be replaced by a few tiny God-like pieces? If so, why do large database systems exist at all?
I don't think systems of large scope can necessarily be replaced by small scope ones. Just that the large project is probably suffering if smaller, more stable parts aren't sloughing off of it as part of your device process.
Spark SQL, Presto, Vora for example allow you to write ANSI SQL and query NoSQL stores such as Cassandra, HBase, MongoDB etc.
And if you are are after SQL-Like well then you have Phoenix, Hive, CQL etc.
For other enterprise solution would require you to contact them first.
1. All enterprise features.
2. All nodes being managed by Citus themselves. All the upgrades or rebalancing will be done by them.
Another option which should be cheaper is paying for the Enterprise license and manage it on your own hardware with your own setup.Finally, you could also spin up the community version, which is free but lack important enterprise features such as rebalancing the shards when you add more nodes to the setup.
In general what we find is most Citus users are either memory constrained or constrained on processing power.
https://www.youtube.com/watch?v=NjlCVW_ouL8
Money quote at 02:25:
[O'Neill demonstrating a staff weapon]
This is a weapon of terror. It's made to... intimidate the enemy.
THIS...
[O'Neill shows a P-90]
... is a weapon of _war_. It's made to _kill_ your enemy.
I.e. effective beats elegant :).