Используя SQlite, у меня большая база данных, разбитая на годы:
DB_2006_thru_2007.sq3
DB_2008_thru_2009.sq3
DB_current.sq3
Все они имеют один вызов таблицы hist_tbl с двумя столбцами (ключ, данные).
Требования:
1. иметь возможность доступа ко всем данным одновременно.
2. Вставки идут только в текущей версии.
3. данные будут продолжать делиться с течением времени.
4. Доступ осуществляется через одну программу, которая имеет эксклюзивный доступ.
5. программа может принимать некоторые настройки SQL, но при запуске одной или нескольких баз данных она должна выполняться одинаково.
Для их совместного просмотра я делаю следующее (на самом деле в программе, но здесь показана командная строка):
sqlite3 DB_current.sq3
присоединить базу данных 'DB_2006_thru_2007.sq3' как исторический_1;
присоединить базу данных 'DB_2008_thru_2009.sq3' как исторический_2;
создать временное представление Hist_TBL как
выберите * из объединения исторических1.hist_tbl
выберите * из объединения исторических2.hist_tbl
выберите * из main.hist_tbl;
Теперь есть temp.hist_tbl (view) и main.hist_tbl (table).
Когда я выбираю без определения таблицы, я получаю данные через представление.
Это желательно, поскольку я могу использовать свои стандартные SQL-запросы к объединенному представлению или отдельным базам данных в зависимости от того, как я настроил. Кроме того, я всегда могу вставить в main.hist_tbl.
Вопрос 1: Каковы недостатки?
Вопрос 2: есть ли лучший способ?
Заранее спасибо.