Обработка изменений в 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;

Итак, у меня есть эти две таблицы. Я выполняю все операции чтения из «DataNode», и когда происходит изменение, я записываю текущую запись в «DataNode_Revisions», а затем изменяю свою существующую запись «DataNode». Имеет смысл?

Это лучший способ сделать это? Я уже могу сказать, что столкнусь с проблемами при изменении схемы. Я не вижу лучшей альтернативы, но если она есть, дайте мне знать! Я предполагаю, что хранение всего этого в одной таблице приведет к огромным потерям производительности, разве нет? То есть я бы увеличил количество записей более чем в четыре раза, а их уже довольно много. Я думаю, что Drupal хранит такие версии узлов, и мне любопытно, как они не страдают от проблем с производительностью из-за этого.

"DataNode" постоянно читается многими пользователями. Однако когда-либо происходит очень мало записей. "DataNode_Revisions" читается только от случая к случаю. Я просто беспокоюсь о том, чтобы поддерживать так много таблиц. «DataNode» - одна из ~ 25 таблиц, очень похожих на эту.

8
задан Jim W. 23 November 2010 в 16:21
поделиться