Я создаю график для нашего инженера для анализа.Расписания загружаются каждый день, и анализ выполняется на локальных компьютерах.
Итак, сейчас я нахожусь в этой дилемме сохранения расписания в базе данных в виде строк таблицы или в виде nvarchar (max).
Вот требование
- Расписания генерируются каждый день.Каждое расписание с точностью до 1 секунды.Таким образом, самое большее, он будет содержать 86,400 записей за расписание .
- В день, в зависимости от настройки , система может генерироватьдо 100 расписаний на одного инженера (у нас около 10 инженеров)
- Расписание содержит следующие поля:
INT | INT | INT | INT | NVARCHAR(1024) | NVARCHAR(64) | BIT | BIT | DATETIME | DATETIME
(В итоге: 4x INTs , 2x NVARCHAR , 2x БИТЫ и 2x ДАННЫЕ ) - Расписание редко будет обновляться, но оно может быть обновлено.Доступные для обновления поля: 2x БИТЫ и 1x DATETIME .
Теперь рассмотрим общий случайСценарий:
В течение дня он генерирует около 1 296 000 записей за день .
This is the calculation of common case scenario:
- 10 seconds accuracy per schedule = 8,640 rows
- 5 engineers run the scheduler each day
- Each engineer generates about 30 schedules
So total is: 8,640 * 5 * 30 = 1,296,000 records
Если ясохраняйте каждое расписание как NVARCHAR (MAX) с запятыми с разделителями , тогда количество записей уменьшается до 150 записей в день .
Here is the calculation:
- 10 seconds accuracy per schedule = 8,640 rows --> stored as NVARCHAR (becomes 1 record)
- 5 engineers run the scheduler each day
- Each engineer generates about 30 schedules
So total is: 5 * 30 = 150 records
Теперь этоэто требование для этих расписаний:
- Сгенерированные расписания можно просмотреть на веб-сайте.
- Расписания загружаются приложением каждый день для анализа.
- Поля (2x BIT) могут быть обновлены после завершения анализа.Эти поля могут быть обновлены приложением (после завершения анализа расписания) или могут быть обновлены (вручную) инженером на веб-сайте.
- Все сгенерированное расписание должно храниться не менее 3 месяцев для целей аудита.
Какая ваша рекомендация?Сохранять расписания в виде строк таблицы ИЛИ NVARCHAR (МАКС.)