Tengo una tabla decir:Las revisiones de manipulación dentro de 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;
Así que tienen estas dos tablas. Hago todas mis lecturas de "DataNode" y cuando ocurre un cambio escribo la entrada actual en "DataNode_Revisions" y luego modifico mi registro "DataNode" existente. ¿Tiene sentido?
¿Es esta la mejor manera de hacerlo? Ya puedo decir que voy a tener problemas cuando cambie el esquema. No veo una alternativa mejor, pero si hay una, házmelo saber. Supongo que mantener todo esto en una tabla resultaría en pérdidas masivas de rendimiento ¿no? Quiero decir que estaría cuadruplicando más el número de registros y ya hay bastantes. Creo que Drupal almacena revisiones de nodos como esta, y tengo curiosidad de cómo no sufren problemas de rendimiento.
"DataNode" es constantemente leído por muchos usuarios. Sin embargo, muy pocas escrituras ocurren alguna vez. "DataNode_Revisions" solo se lee de vez en cuando. Solo me preocupa mantener tantas mesas. "DataNode" es una de ~ 25 tablas muy similares a esta.
+1: ¡La idea del índice basado en función es excelente! –