Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильная организация хранения исторических данных для существующей БД / 13 сообщений из 13, страница 1 из 1
11.11.2014, 12:42
    #38801886
ValeOFY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Приветствую всех!
Передо мной стоит задача организовать сохранение исторических данных для существующей БД. Организация занимается арендой недвижимости.
Есть обычная БД(3НФ) которая содержит список текущих предожений.
Вся информация об объектах аренды содержится в основной таблице [Предложения] есть поле Дом(FK) , информация о его номере, местоположении разнесена на таблицы [Дома] , [Улицы] , [Районы] . Таким образом информация об адресе предложения получается запросом с JOINами из этих таблиц.

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


Комбинация может быть любая, и запрос должен иметь приемлемый таймаут.
Наверняка есть какие-то паттерны реализации подобного функционала.
Как я понял из теории, получается что сейчас есть только БД, а нужно смотреть в сторону понятий OLAP Data Warehouse или Data Mart. Или это это можно реализовать в рамках классической реляционной БД? Какие есть варианты? Спасибо!
...
Рейтинг: 0 / 0
11.11.2014, 12:55
    #38801915
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
ValeOFYИли это это можно реализовать в рамках классической реляционной БД?

Хранимые агрегаты с нужной гранулярностью и параметрами можно организовать и в "обычной
БД". Для твоей задачи, возможно, хватит и materialized view.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.11.2014, 13:18
    #38801977
ValeOFY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Dimitry Sibiryakov,
Отлично, 3 новых понятия для изучения.
Может посоветуешь ссылку на ресурс с которого можно начать?
...
Рейтинг: 0 / 0
11.11.2014, 22:07
    #38802827
ValeOFY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Dimitry Sibiryakov, я был бы очень признателен, если бы ты дал немного более развернутый ответ. Мне надо понять, с чего начать изучение данной тематики.
...
Рейтинг: 0 / 0
11.11.2014, 22:17
    #38802830
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Начни с руководства по языку SQL. Наплюнь на "приемлемый таймаут" и добейся, чтобы твои
запросы извлекали необходимую информацию из уже существующей БД. Потом будешь читать о их
оптимизации.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.11.2014, 22:44
    #38802847
ValeOFY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Dimitry Sibiryakov, в существующей БД есть только данные на текущий момент. Я пытаюсь понять как правильно организовать сохранение истории, чтобы можно было на графике увидеть изменения цены объектов с течением времени.
...
Рейтинг: 0 / 0
11.11.2014, 23:09
    #38802857
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
ValeOFYв существующей БД есть только данные на текущий момент.
А куда деваются данные за прошедший момент?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.11.2014, 23:35
    #38802870
ValeOFY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Dimitry Sibiryakov, записи из таблицы [Предложения] просто удаляются.
На другом форуме(ссылка в личке), мне посоветовали, что можно не удалять записи, а добавить столбцы
DateFrom и DateTo , записывать туда когда объект выставили, а когда сняли, таким образом все информация для истории сохранится.

Но если просто делать запросы для анализа истории цен к этой таблице, то опасаюсь следующего:
ЯОбъемы информации большие.
В базе в данный момент времени находится 300К объявлений.
Ежедневно она обновляется, возьмем 5% = 15К объявлений добавляется, столько же удаляется.
Таким образом за год будет ~ 5.5КК записей в таблице [Предложения] .
Таблица [Дома] содержит 140К записей.
Скажем, я хочу получить график динамики стоимости аренды 2х-комнатных квартир за 3 года с шагом один месяц.
Получается, необходимо 36 запросов к этой БД, каждый из которых должен посчитать среднюю стоимость за месяц, и не просто всех квартир, еще и удовлетворяющих некоторым условиям (2х-комнатные).
Я понимаю, что у меня не хватает фундаментальных знаний, и что способов реализации много, но хочу выбрать подходящий подход, чтобы не идти в неправильном направлении. Я уже начал читать про IndexedView's и хранимые агрегаты(как я понял, это хранимые процедуры с агрегатными функциями, гранулярность - что-то типа частоты с которой надо ими делать выборку).
...
Рейтинг: 0 / 0
11.11.2014, 23:36
    #38802871
ValeOFY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Лички нет. В общем, на сайберфоруме тема.
...
Рейтинг: 0 / 0
11.11.2014, 23:40
    #38802872
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Ищите по форуму
навскидку
http://www.sql.ru/forum/1116400-1/puteshestviya-v-proshloe
...
Рейтинг: 0 / 0
11.11.2014, 23:49
    #38802874
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
ValeOFYмне посоветовали, что можно не удалять записи, а добавить столбцы
DateFrom и DateTo, записывать туда когда объект выставили, а когда сняли, таким образом
все информация для истории сохранится.
И это совершенно правильное предложение. Собственно, я удивлён, что в этой базе таких
полей сейчас нет.

ValeOFYПолучается, необходимо 36 запросов к этой БД, каждый из которых должен
посчитать среднюю стоимость за месяц
Вот именно поэтому я и сказал сначала читать руководство по языку SQL, ибо "36 запросов"
это бред. Хотя, конечно, тоже вариант. Причём один из наибыстрейших.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.11.2014, 00:13
    #38802882
ValeOFY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
Dimitry SibiryakovВот именно поэтому я и сказал сначала читать руководство по языку SQL, ибо "36 запросов"
это бред. Хотя, конечно, тоже вариант. Причём один из наибыстрейших.
=)) Буду изучать.
В общем, как я понял, надо оставлять все объявления, добавить период актуальности, а потом уже выбирать инструменты для выборки данных для аналитики. Например, вышеуказанные IndexedViews. Направление определено.
Благодарю за помощь!
...
Рейтинг: 0 / 0
12.11.2014, 12:16
    #38803278
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Правильная организация хранения исторических данных для существующей БД
ValeOFY, для начала нужно организовать наличие необходимой информации. По уровню вопроса могу рекомендовать следующее решение: оставить всё как есть, добавить таблицу История предложений , куда триггером с предложений скидывать всю интересную информацию (когда стояло, было ли успешно закрыто итп). Затем реализовать необходимый функционал запросов к этой истории. Когда и если начнёт подтормаживать - смотреть, как эти запросы ускорить.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильная организация хранения исторических данных для существующей БД / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]