J'envisageais d'utiliser cockroachdb pour écrire des données en 3e forme normale avec des garanties ACID. Donc toutes les écritures seront détournées vers cockroachdb.CQRS avec cockroachdb en configuration polyglotte
Les lectures peuvent toutes être une recherche de point basée sur une clé de ligne à Cassandra. Je crois qu'une telle configuration de lecture éliminera le besoin de mise en cache redis puisque Cassandra donnera des lectures rapides par elle-même. Ainsi, les tables Cassandra seront dénormalisées en fonction des chemins d'accès.
Il peut y avoir une synchronisation basée sur les événements à partir de insert/update/delete dans le schéma normalisé cockroachdb pour insérer/mettre à jour/supprimer dans le schéma cassandra denormalzied.
Question 1:
Est-ce en lecture/écriture en forme de séparation dans un usecase valide pour l'utilisation cockroachdb? L'intention est de réduire les jointures et d'avoir des lectures rapides ainsi que des écritures. Cockroachdb devient une source unique de vérité en ingérant des données de type Event Sourcing. Et d'autres bases de données comme cassandra et elasticsearch deviennent des projections de requêtes qui sont finalement synchronisées.
Question 2:
Est-ce bon d'installation avec les transactions financières où les déclarations N doivent faire atomiquement? D'après ce que je comprends, supposons qu'il y ait N instructions SQL qui sont faites transactionnellement dans le schéma 3NF de cockroachdb. Après cela, les lectures arrivent de Cassandra/ElasticSearch qui ne sera pas encore synchronisé en raison de la latence de synchronisation. Dans ce scénario de cohérence éventuel, si l'utilisateur envoie une autre commande pour obtenir le même résultat de l'autre machine en parallèle, cela ira au gestionnaire de commandes qui recherchera dans cockroachdb. Je pense que puisque CockroachDb est conforme ACID, nous allons invalider la commande lors de l'étape de validation de la commande après la recherche de cockroachdb. Je crois que ce cockroachdb lancera une exception de verrou optimiste car une transaction qui écrit sur la même table est déjà en cours. Donc la question est - dans de tels scénarios, devrions-nous lire aussi bien de CockroachDB au lieu de Cassandra/ElasticSearch?
Question 3
usecase dernière, j'avais à l'esprit était d'avoir cockroachdb jouer le rôle ce qu'un groupe d'étincelle fera avec cassandra par rapport à agrégations. Nous pouvons faire l'agrégation à l'intérieur de cockroachdb qui a toutes les données et stocker dans des tables pré-agrégées dans Cassandra. Bien qu'ElasticSearch soit aussi capable de faire de l'agrégation, voici une question: cette fonctionnalité semble-t-elle également correcte à l'aide de cockroachdb au lieu de elasticsearch pour l'agrégation?
Merci pour la réponse détaillée. Une question que j'ai encore concernant la recherche en texte intégral, quelles sont les options actuelles dans cockroachdb pour cela? – fortm
CockroachDB ne possède actuellement aucune sorte d'indexation de texte intégral. Il est suivi dans [ce numéro] (https://github.com/cockroachdb/cockroach/issues/7821). Nous aimerions le faire un jour mais ce n'est pas encore prévu. –