Должен ли я кэшировать данные базы данных SQL и запрашивать их локально?Или приложение запрашивает базу данных напрямую? - PullRequest
1 голос
/ 30 апреля 2019

Я делаю заявку на C #, это первый профессиональный проект, который я добавлю в свое портфолио.Приложение подключается к удаленному SQL Server и запрашивает конкретные таблицы, чтобы получить такие данные, как информация об ученике, сведения о курсах и данные о зачислении студентов на каждый курс.

У меня такой вопрос, хотя запрос вернетбольшую часть времени в одной записи, есть ли необходимость кэшировать таблицы?Существует только 3 таблицы («Студенты», «Курсы», «Зачисление»), и «Курсы» - единственная таблица, которая не меняет все так часто, по крайней мере, по сравнению с двумя другими.

В двух словах, приложениеCLI, который позволяет пользователю просматривать школьные курсы, зарегистрированных учащихся и зачисление учащихся на эти курсы.Приложение имеет функцию ввода информации об ученике, например, его имени, почтового адреса и контактной информации, которая затем сохраняется в SQL Server.То же самое касается деталей курса, таких как идентификатор курса, имя и описание.Помимо регистрации, где сервер присоединяет StudentID и CourseID в записи, чтобы показать, что указанный студент зарегистрирован в этом курсе.

В настоящее время я запускаю локальный экземпляр MSSQL, но планируюсоздайте облегченную виртуальную машину для хранения сервера SQL для репликации сценария удаленного доступа.

Я полагаю, что если приложение когда-либо будет развернуто в крупномасштабной среде, таблицы увеличатся до большого размера и простого запросадля удаленного выполнения может потребоваться некоторое время.

Должен ли я внедрять систему кэширования, если я предполагаю, что таблицы увеличатся в размере?Или я должен просто сделать это из хорошей практики?

Пока что запрос выполняется очень быстро.Однако это может быть связано с тем, что установка MSSQL является локальной, или с тем, что в таблицах в настоящее время имеется только 2-3 записи выборочных данных.В будущем я планирую создать дополнительные образцы данных, чтобы узнать, можно ли управлять временем выполнения.

Ответы [ 3 ]

1 голос
/ 30 апреля 2019

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

Имейте в виду, что базы данных чрезвычайноэффективен при поиске и извлечении данных.При наличии достаточного оборудования ядро ​​базы данных всегда будет превосходить структуры кэша C #.

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

0 голосов
/ 30 апреля 2019

Кэширование - хороший вариант для данных, к которым часто обращаются, но которые меняются не так часто.В вашем случае это относится к «Курсам», для которых вы сказали, что данные будут меняться не часто.

Однако для данных, размер которых в будущем будет увеличиваться и которые будут часто вставляться / обновлятьсяЛучше подумать об оптимизации способа их хранения и извлечения из хранилищ данных.В вашем случае таблицы 'Student' и 'Enrollment' - это такие таблицы, в которых со временем ожидается большое количество вставок / обновлений.

Так что лучше написать оптимизированные процедуры для выполнения операций CRUD над этими таблицами, а также сохранять индексы правильной сортировки в таблицах.Это не только обеспечит лучшую управляемость данными, но и даст требуемую производительность по сравнению с кэшированием результатов.

0 голосов
/ 30 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...