Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
1

Скорость БД за счёт актуальности результата запросов

11.03.2017, 20:16. Показов 1261. Ответов 2

Author24 — интернет-сервис помощи студентам
Здравствуйте! Решаю учебную задачу по написанию сервера учёта статистики. В его обязанности входит приём запросов на добавление информации, а также на получение различных статистических данных. Все сущности решил хранить в локальной БД SQLite. Схема БД состоит из восьми взаимосвязанных таблиц, содержащих достаточно мелкие сущность (менее 100 символов текста) - ничего особенного.

В задании указанно, что нужно приоритизировать время отклика на статистические запросы, при этом можно не учитывать информацию, поступившую менее минуты назад. Собственно, возник вопрос: каким образом можно разменять актуальность информации на скорость обработки запросов?

У меня пока есть только одна идея насчёт этого. Заключается она в поддержании дубликата базы данных. Так, одна БД служит источником информации для запросов, вторая для записи полученной информации. Полученная информация также буферизируется в ОЗУ. После прошествии некоторого времени, запросы на статистику перенаправляются на актуальную БД, а устаревшая актуализируется при помощи буферизированной в ОЗУ информации. И так по очереди.

Но у меня есть сомнения относительно этого решения: а не упрётся ли вся производительность в скорость жёсткого диска, тогда ведь ведение копии данных лишь замедлит программу?

Хотел бы услышать ваши комментарии по этому поводу. Может кто-нибудь уже решал подобную проблему и подскажет какие варианты оптимизаций могут быть применены в подобных обстоятельствах. (использую C#, EF6, если это имеет значение)

Заранее благодарю за ответ!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2017, 20:16
Ответы с готовыми решениями:

Подскажите на счёт актуальности и конкуренции веб разработки
Доброго времени суток! Помогите пожалуйста советом, точнее подсказкой. Есть ли возможность...

Обработка результата асинхронных запросов
Помогите пож-та, как результат неизвестного количества асинхронных запросов вывести по окончанию...

Последовательная передача результата запросов в массив/рекодсет
Здравствуйте, уважаемые форумчане! И снова необходима ваша помощь. Направьте в нужном...

Скорость JQuery запросов
Имеет ли смысл упражняться в написании более быстрых JQuery запросов для одной и той же задачи ?

2
476 / 239 / 114
Регистрация: 12.05.2016
Сообщений: 647
12.03.2017, 21:04 2
Лучший ответ Сообщение было отмечено TopLayer как решение

Решение

Статистические запросы - это обычно запросы на агрегацию данных (подсчет количества, средние, суммы, максимум, минимум, сводки за периоды и т.д. и т.п.), соответственно, ускорение получения статистической информации обычно сводится к предварительному расчету нужных агрегатов.

Каким способом это достигается - зависит от конкретной реализации базы данных.

Например, в Oracle для этого служит внутренний механизм материализованных представлений или вообще Oracle Data Warehouse (DWH) с его предрасчитываемыми аналитическими кубами и срезами.


Для SQLite можно предложить какой-нибудь фоновый процесс, который будет асинхронно обновлять необходимую статистическую информацию, соответственно её получение будет сводиться к обычному запросу из сводной таблицы, в которой буду лежать как раз "не супер свежие данные на ту дату, когда фоновый процесс в последний раз обновлял статистику".
1
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
12.03.2017, 22:42  [ТС] 3
Anvano, дельное предложение! Наверное на нём и остановлюсь, хоть и придётся эту таблицу в рантайме создавать, из-за требования к лёгкому масштабированию (добавление новых статистических свойств). Спасибо!
0
12.03.2017, 22:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2017, 22:42
Помогаю со студенческими работами здесь

Вывод результата запросов в ListBox на форме с условием на выборку
Добрый день, очень нужна помощь в разъяснении синтаксиса программы. Столкнулась с такой...

Скорость выполнения запросов в SQLite
Здравствуйте! Собственно, мне нужно осуществлять динамическую запись в журнал происходящих в...

Скорость выполнения мелких запросов
Доброго времени суток. Перейду сразу к вопросу: SELECT * FROM `register` WHERE idus='10000'...

Скорость обработки запросов MySQL
Всем привет! Вообщем, сложилась такая ситуация, делаю выгрузку из БД MySQL. Запросы выполняются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru