Как иметь дело со старыми, устаревшими данными базы данных длительной системы?

Вы должны хранить информацию о состоянии каждого элемента (если он был нажат) в ваших данных. Затем, когда вы нажимаете на кнопку, вы должны обновить свойство clicked для определенного элемента. Наконец, если item.clicked установлен в true, вы покажете свой дочерний компонент (или любой другой html).

<template>
  <div>
    <div v-for="item in items" :key="item.id">
      <button @click="item.clicked = true" >Show child</button>
      {{item.name}}
      <div v-if="item.clicked">Item child</div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data: function() {
    return {
      items: [
        {
          id: 1,
          name: 'test1',
          clicked: false
        },
        {
          id: 2,
          name: 'test2',
          clicked: false
        },
        {
          id: 3,
          name: 'test3',
          clicked: false
        }
      ]
    }
  }
}
</script>
9
задан rics 14 October 2008 в 07:50
поделиться

11 ответов

Со старыми данными, не используемыми в большинстве запросов, лучшее решение к таблицам разделов ключ, который дифференцируется устаревший от текущих данных (таких как дата, currency_id или подобные вещи). Можно затем поместить устаревшие данные в отдельные таблицы, базы данных или даже серверы (в зависимости от конфигурации, у Вас есть выполнение).

Оборотная сторона к этому - то, что Ваше приложение должно стать осведомленным о разделе для знания, где найти данные (хотя существуют абстракции, которые помогают соглашению с sharding и partioning).

4
ответ дан 4 December 2019 в 21:13
поделиться

В нескольких случаях у меня были старые данные и старая программа, дублированная с соответствующим набором полномочий только для чтения. Таким образом у пользователей есть способность видеть старые данные и выполнение создания отчетов с помощью старой программы. Затем Вы свободны усовершенствовать современную программу, как Вы считаете целесообразным, удаляя столбцы или таблицы, перемещая некоторые данные, и т.д.

1
ответ дан 4 December 2019 в 21:13
поделиться

Для любой объект, который может иметь ограниченное время жизни, просто добавьте компонент времени в его определении. Например, Ваша итальянская лира может быть смоделирована как:

CREATE TABLE Currency (CurrencyID NUMBER, CurrencyStartDate DATETIME, CurrentEndDate DATETIME)

Можно затем исключить валюты с истекшим сроком из любых прикладных функций, связанных с текущим действием, и все еще поддерживать отношения для исторических данных.

2
ответ дан 4 December 2019 в 21:13
поделиться

Действительно необходимо обработать его индивидуальный, так как это - бизнес-правила, который определяет, когда устаревшая запись релевантна или нет. Например, в некоторых исторических переспортивных состязаниях имело бы смысл включать продажи СССР, в других случаях Вы пропустите его.

Общий шаблон должен был бы иметь "релевантный из/в" поле даты и времени на записях. В этом случае исторические доклады могут включать в себя типы, который релевантен в течение периода. (Простое решение было бы булевым "устаревшим" флагом на записях, но так как это не указывает, когда это было релевантно, это привычка быть столь же полезным для исторического отчета.)

1
ответ дан 4 December 2019 в 21:13
поделиться

Это - стандартная Медленно изменяющаяся проблема Размера. У Вас есть SCD's с диапазонами даты и/или состоянием.

"каждый из них имеет в виду индивидуальное решение, и трудно знать, каким типам объектов нужна эта специальная обработка"

Да. Извините за это. Необходимо проанализировать данные и думать. Никакой простой способ вокруг интеллектуальной части этого.

1
ответ дан 4 December 2019 в 21:13
поделиться

Я предложил бы разделить операционную систему и систему отчетности. Имейте одну базу данных для операционного - система онлайн и другой для создания отчетов. (Могло быть хранилище данных или простое другая база данных) на основе того, как универсальный Вам нужна система отчетности, чтобы быть.

Переместите данные от операционной системы до системы отчетности периодически. (частота зависит от природы Вашей системы). Все исторические отчеты были бы основаны на базе данных создания отчетов. База данных онлайн также содержала бы отчеты, но не (очень) исторические.

И, да. Необходимо поддержать даты или флаги на таблицах, чтобы решить, истек ли объект.

1
ответ дан 4 December 2019 в 21:13
поделиться

В дополнение к тому, что Eran сказал о paritioning, Вы могли частично автоматизировать процесс решения, что поместить в заархивированный parition при наличии столбца LastModified или подобный. Затем просто partioning на основе LastModified <-1y или так, система должна узнать о самих устаревших данных.

0
ответ дан 4 December 2019 в 21:13
поделиться

Одно решение могло быть (принимающие записи, ссылающиеся на устаревшие данные, являются самыми старыми): заархивируйте те записи и удалите старые справочные данные.

0
ответ дан 4 December 2019 в 21:13
поделиться

Коммерческий DBMS (Informix, DB2, вероятно, Oracle...) имеет возможности разделения или фрагментации, таким образом, что можно поместить различные данные в различные фрагменты, и оптимизатор запросов проигнорирует фрагменты, что это знает, что этому не нужно. Можно иногда использовать их для размещения менее часто используемых данных в области хранения, только используемые для архаичных данных. Преимущество этого состоит в том, что системные соглашения с размещением (хорошо, система плюс DBA), и приложения абсолютно не обращают внимания на него.

Любая схема, которая требует изменений в приложениях для создания отчетов, обречена повредить по крайней мере некоторые из тех приложений.

0
ответ дан 4 December 2019 в 21:13
поделиться

Можно также обновить старые данные. Например, можно преобразовать суммы итальянской лиры в Европейские суммы. Но это - действительно индивидуальное решение. Вы знаете свою систему и требования лучше всего.

0
ответ дан 4 December 2019 в 21:13
поделиться

Я нашел подобный вопрос: Что лучший способ состоит в том, чтобы реализовать мягкое удаление? контакт с действием отмечает решение.

И вот, другой на действии отмечает 'активный' флаг или нет? для mysql и postgresql.

На основе этих двух флагов действия вопросов и/или таблицы разделение наиболее распространенные решения проблемы.

0
ответ дан 4 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: