J'ai une table dire:révisions de manutention au sein d'Oracle
CREATE TABLE "DataNode" (
"ID" NUMBER(7,0),
"TYPE" NUMBER(7,0),
"NAME" VARCHAR2(100),
"STATUS" NUMBER(7,0),
"REVISION" NUMBER(4,0),
"MODIFIEDAT" DATE
);
CREATE TABLE "DataNode_Revisions" (
"ID" NUMBER(7,0),
"NODEID" NUMBER(7,0),
"TYPE" NUMBER(7,0),
"NAME" VARCHAR2(100),
"STATUS" NUMBER(7,0),
"REVISION" NUMBER(4,0),
"MODIFIEDAT" DATE
) COMPRESS;
J'ai donc ces deux tables. Je fais toutes mes lectures de "DataNode" et quand une modification se produit j'écris l'entrée courante à "DataNode_Revisions" et puis modifie mon enregistrement "DataNode" existant. Logique?
Est-ce la meilleure façon de procéder? Je peux déjà dire que je vais rencontrer des problèmes lorsque le schéma change. Je ne vois pas une meilleure alternative mais s'il y en a une s'il vous plaît faites le moi savoir! Je suppose que garder tout cela dans un seul tableau entraînerait des pertes de performance massives sans cela? Je veux dire que je quadruplerais le nombre de disques et qu'il y en a déjà pas mal. Je pense que Drupal stocke les révisions de nœud comme ça, et je suis curieux de voir comment ils ne souffrent pas de problèmes de performance.
"DataNode" est constamment lu par de nombreux utilisateurs. Cependant, très peu d'écritures se produisent. "DataNode_Revisions" est seulement lu à l'occasion. Je suis juste inquiet de maintenir autant de tables. "DataNode" est l'une des ~ 25 tables très similaires à celle-ci.
+1: L'idée d'index basée sur la fonction est excellente! –