Я постараюсь сохранить независимость этой базы данных вопросов, но у меня есть интересная проблема, которую мне нужно решить, и я подумал, что открою слово для предложений и отзывов.
Мне нужночтобы иметь возможность загружать данные из источника канала и сохранять их в какой-либо базе данных, эти данные необходимо объединить с существующими данными, и мне нужно иметь возможность запрашивать данные на любую заданную дату .Я хочу поговорить об этой части, выделенной жирным шрифтом.
По сути, эта проблема сводится к тому, что мне нужно сохранить граф объектов в базе данных OLTP и иметь возможность запрашивать его во времени.
В простом случае с одной таблицей эта проблема очень проста: у вас есть диапазон дат, указывающий действительный промежуток времени для записи, а затем вы передаете интервал по состоянию и выбираете только те строки, которые действительны для этой точкивремя.Проблемы возникают, когда у вас есть более одной таблицы.
Давайте рассмотрим случай наличия двух таблиц Order- * Item.
Когда мы запрашиваем заказ, мы можем применить то же, что идата изменения в таблице позиций.Все хорошо, но что произойдет, если мы захотим изменить заказ?Теперь нам нужно скопировать строку заказа, установить диапазоны дат таким образом, чтобы действительное значение для новой строки и действительное значение для новой строки были установлены на сейчас.Мы также должны скопировать элементы или, если мы изменим нашу модель, скопировать ссылки на элементы.
Даже в этом простом случае все становится сложным.
Моя проблема усугубляется, потому чтоУ меня есть самоссылочный граф объектов, поэтому для использования описанной выше модели у вас будет Order- * Item- * Order.
Что бы вы сделали?Как вы структурируете свои базы данных, когда вам нужно управление версиями строк и временных запросов?