> On May 30, 2021, at 2:12 AM, Sébastien Rebecchi <srebec...@kameleoon.com> > wrote: > > > Hello, > > I have a more general question about that, I cannot find clear answer. > > In my use case I have many tables (around 10k new tables created per months) > and they are created from many clients and only dynamically, with several > clients creating same tables simulteanously.
This sounds like a bad idea in practice. There are lots of things that aren’t going to scale in this manner. Cassandra > > What is the recommended way of creating tables dynamically? If I am doing "if > not exists" queries + wait for schema aggreement before and after each create > statement, will it work correctly for Cassandra? > Waiting for schema agreement is the key. The if not exists on DDL is not actually paxos. > Sébastien. > >> Le ven. 28 mai 2021 à 20:45, Sébastien Rebecchi <srebec...@kameleoon.com> a >> écrit : >> Thank you for your answer. >> >> If I send all my create operations still from many clients but to 1 >> coordinator node, always the same, would it prevent schema mismatch? >> >> Sébastien. >> >> >> Le ven. 28 mai 2021 à 01:14, Kane Wilson <k...@raft.so> a écrit : >>>> Which client operations could trigger schema change at node level? Do you >>>> mean that for ex creating a new table trigger a schema change globally, >>>> not only at KS/table single level? >>> Yes, any DDL statement (creating tables, altering, dropping, etc) triggers >>> a schema change across the cluster (globally). All nodes need to be told of >>> this schema change. >>> >>>> I don't have schema changes, except keyspaces and tables creations. But >>>> they are done from multiple sources indeed. With a "create if not exists" >>>> statement, on demand. Thanks you for your answer, I will try to see if I >>>> could precreate them then. >>> Yep, definitely do that. You don't want to be issuing simultaneous create >>> statements from different clients. IF NOT EXISTS won't necessarily catch >>> all cases. >>> >>>> As for the schema mismatch, what is the best way of fixing that issue? >>>> Could Cassandra recover from that on its own or is there a nodetool >>>> command to force schema agreement? I have heard that we have to restart >>>> the nodes 1 by 1, but it seems a very heavy procedure for that. >>> A rolling restart is usually enough to fix the issue. You might want to >>> repair afterwards, and check that data didn't make it to different versions >>> of the table on different nodes (in which case some more intervention may >>> be necessary to save that data). >>> >>> -- >>> raft.so - Cassandra consulting, support, and managed services