В прошлом году мы запустили http://tweetMp.org.au — сайт, посвященный австралийской политике и Twitter.
В конце прошлого года нашу политическую схему нужно было скорректировать, потому что некоторые политики ушли на пенсию, а на ее место пришли новые политики.
Изменение нашей базы данных требовало ручного изменения (SQL), поэтому я рассматривал возможность внедрения CMS для наших администраторов, чтобы вносить эти изменения в будущем.
Есть также много других сайтов, посвященных правительству/политике Австралии, которые управляют своими собственными данными о политиках.
Я хотел бы придумать централизованный способ сделать это.
Поразмыслив над этим некоторое время, возможно, лучший подход — не моделировать текущее представление данных политика и то, как они соотносятся с политической системой, а вместо этого моделировать транзакции. Таким образом, текущее представление является проекцией всех транзакций/изменений, которые произошли в прошлом.
Используя этот подход, другие сайты могут «подписаться» на изменения (а-ля pubsubhub), отправить изменения и просто интегрировать эти элементы изменений в свои схемы.
Без этого подхода большинству сайтов пришлось бы снести всю базу данных и заполнить ее заново, поэтому любые связанные записи необходимо было бы повторно связать. Управление данными таким образом довольно раздражает и серьезно препятствует объединению этих данных для общественного блага.
Я заметил, что некоторые вещи работают таким образом — контроль версий исходного кода, банковские записи, система очков stackoverflow и многие другие примеры.
Конечно, непосредственные проблемы и проблемы проектирования с этим подходом включают
- текущее представление кэшируется и сохраняется? как часто он обновляется?
- какие базовые сущности должны существовать, которые никогда не меняются?
- наверное, еще куча всего, о чем я сейчас не могу думать...
Есть ли какая-нибудь заметная литература по этому вопросу, которую кто-нибудь мог бы порекомендовать? Кроме того, какие-либо шаблоны или методы моделирования данных, подобные этому, могут быть полезны?
Любая помощь приветствуется.
-CV