SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Версии записей. ("Про архитектуру".)
icon6.gif  Версии записей. [сообщение #1672] Wed, 22 February 2023 15:34 Переход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 198
Зарегистрирован: September 2022
Senior Member
Плоский (без подуровней) каталог, с файлами (например).
Много Клиентов, все они в режиме RO. И один клиент-Писатель, который иногда меняет данные. Все версии записей данных должны оставаться в системе, физически их не удаляем.

1. Клиент 1 запускается, в момент X коннектится, читает список файлов (имя и, например, размер файла), потом по мере надобности загружает файлы, содержимое которых соответствует моменту X (т.е. когда этот каталог был прочитан). Коннект к БД физически не сохраняется, список файлов хранится в памяти клиента, пока клиент жив. Клиент по мере надобности снова физически коннектится к БД считывает нужные ему файлы (актуальные на момент X).

2. Потом Писатель (возможно, во время работы клиента 1) дополняет/изменяет/удаляет список и содержимое (тело) файлов. А клиент 1 всё так же работает со своей версией данных, актуальной на момент Х.

3. Клиент 2 запускается, в момент Y коннектится, читает НОВЫЙ (измененный в п.2) список и т.д., см. п.1.

3. Потом Писатель опять меняет данные. А клиенты 1 и 2 продолжают работать со своими версиями, актуальными на моменты X и Y соответственно.

... После перезапуска клиенты видят самую последнюю (самую новую) версию данных, и работает уже с ней.
-------------
Что-то когда-то такое обсуждалось, но я уже забыл. Evil or Very Mad
А напомните, пожалуйста. Если помнит кто.
Re: Версии записей. [сообщение #1673 является ответом на сообщение #1672] Wed, 22 February 2023 15:46 Переход к предыдущему сообщениюПереход к следующему сообщению
 в настоящее время не в онлайне 
Сообщений: 198
Зарегистрирован: September 2022
Senior Member
Кажется, вот так: две таблички: Файл и Состояние. В первой хранится имя файла. Во второй хранятся атрибуты (дата и длина, признак "удалён") и содержимое файла , ну и, естественно, также указатель на запись в первой табличке. В первой табличке также хранится указатель на последнюю версию записи Состояния. Меняем данные, просто записывая новые элементы в таблицу Состояние, при этом в таблице Файлы меняем указатель на новый элемент Состояния. Массовое изменение проводится в одной общей транзакции. Получение списка файлов проводится в одной (Snapshot) транзакции.
Если я что-то не забыл ещё...

[Обновления: Wed, 22 February 2023 15:47]

Известить модератора

Re: Версии записей. [сообщение #1677 является ответом на сообщение #1673] Wed, 22 February 2023 18:23 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 889
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
у нас в системе есть признак удаления - PRUDAL CHAR(1).
BOOLEAN-ов тогда не было.
ещё Дед делал.
а табличка состояний тебе нужна если реально хранить архив состояний.
можно делать и "самоархив" - в одной таблице.
подробнее тебе Дед может рассказать.
я сейчас уже нетрезв до неприличия, ибо усугубил.
Re: Версии записей. [сообщение #1678 является ответом на сообщение #1677] Wed, 22 February 2023 20:22 Переход к предыдущему сообщению
 в настоящее время не в онлайне 
Сообщений: 198
Зарегистрирован: September 2022
Senior Member
МП>PRUDAL
...ыыы, пытаюсь перевести. То ли сорт картофеля, то ли производное от "prude"... потом дошло, что просто "признак удаления"... Smile

МП>можно делать и "самоархив" - в одной таблице.

Точно, спасибо.
Предыдущая тема: Не могу подключиться к серверу Firebird на Debian
Следующая тема: OO API: IMessageMetadata.getCharSet (FB3.0)
Переход к форуму:
  


Текущее время: Sat Dec 21 19:01:39 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00739 секунд