Имя: Пароль:
IT
 
MS SQL хранение данных
0 nikast
 
08.10.24
17:29
Коллеги, друзья, любители печенек.. у меня вопрос, и я решил проконсультироваться с Вами.
Имеем: SQL и таблица данных (ID, Name) в ней 40 млн записей.
Необходимо к каждой записи привязать данные (примерно 100 записей к каджой из 40 млн).
Характер данных: структурированные данные (ID, DATE, DATA)

Внимание вопрос: как правильнее выбрать решение
1) Таблица, в которой будет 4 миллиарда записей (4*100)
2) В первой таблице создать поле blob и хранить данные в текстовом виде (понимаю, что о фильтрации можно будет забыть)
3) Пойти по пути 1с, котрые вынесли журнал ренистрации пользоватлей, в текстовый документ и при необходимости бегать по нему.

Эти данные могу понадобиться, а могу и нет (по запросу)
Может кто-то решал подобную задачу. Спасибо.
1 asady
 
08.10.24
17:30
(0) я за 1 вариант
2 PR
 
08.10.24
17:30
(0) Ты ничего не сказал, что могло бы определить выбор
Не привел ни одного примера использования, кроме "Эти данные могу понадобиться, а могу и нет"
3 PR
 
08.10.24
17:30
Хотя (1) это не помешало сделать выбор
4 nikast
 
08.10.24
17:32
(2) Согласен, в первой таблице Заказ-Наряд, во второй таблице записи с действиями, которые сотрудник проделал, чтобы выпонить этот заказ.
Поэтому я и написал про аналог журнала регистрации 1с
5 nikast
 
08.10.24
17:36
(3) Вопрос логичности, скорости роста БД, так как данные по Заказ-Наряд создаются очень активно.
6 asady
 
08.10.24
17:39
(0) для нормальной СУБД на нормальном серваке - 4 млрд записей индексированных - Обычная работа
7 nikast
 
08.10.24
17:43
(6) Да, согласен. Но какие минусы, если бы я выбрал хранение в BLOB, я бы сэкономил на месте (на размерах бд) ?
8 asady
 
08.10.24
17:46
(7) не факт
а производительность точно ниже.
9 BDA80
 
08.10.24
17:49
Не понимаю, а почему не сделать 2 таблицы, как и принято в реляционных базах - заказ-наряды и действия по ним?
10 nikast
 
08.10.24
17:59
(9) Потому что, 4 млрд записей это за 1 год, а что будет дальше? Например 10 млрд...
Логичнее было бы спросить - отдельная таблица, это единственное верное решение?
11 asady
 
08.10.24
18:08
(10) если тебя смущает размер базы - то не парься для снижения дисковой нагрузки есть варианты - например использование разных файловых групп для разных таблиц
12 PR
 
08.10.24
18:12
(4) Конечно же действия отдельно
И вопросы производительности здесь вообще не определяющи и притянуты за уши
13 Грю
 
08.10.24
18:44
(0) Объясни, в чем проблема? Почему нужно выбирать, и что нужно экономить? У тебя недостаточно свободного места на сервере, или что?
Самое правильное решение - вторая таблица.
Если с этим у тебя возникают какие-то проблемы, то их нужно решать отдельно, а не выбирать компромиссы.
14 nikast
 
08.10.24
19:26
Вопрос был какой подход выбрать, если все склоняются к отдельной таблице единогласно, отлично..  подумал, может будут другие мнения.
Меня отдельно смутил вопрос журнала регистрации в 1с, который лежал отдельно от бд, в этом был же какой-то сакральный смысл.
15 PR
 
08.10.24
19:24
(14) Сакральный смысл прост
В журнал регистрации пишется как когда транзакция удалась, так и когда нет
А в базу можно писать только когда транзакция удалась
16 nikast
 
08.10.24
19:26
Принято, спасибо за ответы.
17 Web00001
 
09.10.24
07:26
(15)> в этом был же какой-то сакральный смысл.
Смысл в том, чтобы хранить логи отдельно. Ты можешь это интегрировать с общей системой хранения логов. Ты можешь прикрутить туда свою систему ротации логов. Основная идея здесь в том, чтобы хранить логи так как это делает весь остальной мир - отдельно и в текстовом файле.
18 Chai Nic
 
09.10.24
08:23
(15) Можно же было разделить "прикладной" журнал регистрации и "системный". Про транзакции писать в системный, а про то, что произошло в базе - в прикладной, хранящийся внутри базы.
19 ptiz
 
09.10.24
10:47
(0) Если версия SQL позволяет использовать сжатие данных - оно в разы может сэкономить место.