Size: a a a

DBA - русскоговорящее сообщество

2021 February 28

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество
и генерацию через API)
источник

SC

Serega Carbon in DBA - русскоговорящее сообщество
вообще странно, что субд не предостовляет такой генератор данных
источник

У

Уруруборос Иванович... in DBA - русскоговорящее сообщество
Sergey Polichnoy
чтобы писать генерилку данных - надо понимать что за БД перед тобой
Так-то да
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Уруруборос Иванович
На чём бы вы попытались написать генерилку данных?
C++ конечно
источник

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество
Serega Carbon
вообще странно, что субд не предостовляет такой генератор данных
потому что это дурь
источник

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество
генерация должна быть там, кто юзает БД
источник

SC

Serega Carbon in DBA - русскоговорящее сообщество
Sergey Polichnoy
генерация должна быть там, кто юзает БД
можно абстрагироваться, есть таблицы, есть реляции, есть ключи, есть индексы и всё, мы генерим тестовые данные
источник

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество
берём поле varchar(255)
и ищем по нему - о ужас какое дно
берём тоже поле с ключём по первым 8 символам и длине поля 16 - офигенно
внезапно туда попадают данные с длиной 128 - и снова какое-то дно
источник

A

Adv0cat in DBA - русскоговорящее сообщество
Lex E
ну вот юз кейс,

нагрузочное тестирование

10тыс запросов чтение / сек
1тыс запросов запись / сек

20 таблиц,
у таблиц есть отношения, которые нужно уважать

нужно сгенерировать данные для запросов на запись
Это надуманный юзкейс)) мне нужно реальный))) что за данные, куда, как используются и т.д.)
источник

SC

Serega Carbon in DBA - русскоговорящее сообщество
Sergey Polichnoy
берём поле varchar(255)
и ищем по нему - о ужас какое дно
берём тоже поле с ключём по первым 8 символам и длине поля 16 - офигенно
внезапно туда попадают данные с длиной 128 - и снова какое-то дно
почему генератор не может заранее просканить все таблицы и т.д. , и засунуть в них норм данные
источник

SC

Serega Carbon in DBA - русскоговорящее сообщество
мне кажется это вполне реально сделать
источник

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество
Serega Carbon
почему генератор не может заранее просканить все таблицы и т.д. , и засунуть в них норм данные
да в лёгкую
источник

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество
извините
источник

LE

Lex E in DBA - русскоговорящее сообщество
Adv0cat
Это надуманный юзкейс)) мне нужно реальный))) что за данные, куда, как используются и т.д.)
ну я начал писать, они меня гнетут))
источник

SC

Serega Carbon in DBA - русскоговорящее сообщество
Sergey Polichnoy
да в лёгкую
ну я не сказал, что легко, но думаю, что вполне возможно
источник

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество
CREATE TABLE `agreements` (
 `agrm_id` int NOT NULL AUTO_INCREMENT COMMENT 'Идентификатор договора',
 `uid` int NOT NULL COMMENT 'Идентификатор пользователя',
 `oper_id` int NOT NULL COMMENT 'Идентификатор оператора, предоставляющего услуги',
 `number` varchar(128) DEFAULT NULL COMMENT 'Номер договора',
 `date` date NOT NULL DEFAULT '0000-00-00' COMMENT 'Дата договора',
 `balance` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Текущий баланс лицевого счета в валюте, определяемой cur_id',
 `credit` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Разрешенный кредит в валюте, определяемой cur_id',
 `installments` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Сумма рассрочки в валюте, определяемой cur_id',
 `cur_id` int DEFAULT NULL COMMENT 'Идентификатор валюты лицевого счета',
 `code` varchar(40) DEFAULT NULL COMMENT 'Код оплаты',
 `archive` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Договор удален (флаг)',
 `balance_acc` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Бухгалтерское сальдо по договору',
 `parent_agrm_id` int DEFAULT NULL COMMENT 'Идентификатор родительского договора',
 `owner_id` int DEFAULT NULL COMMENT 'Идентификатор оператора, заключившего договор',
 `state` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Состояние договора:0-активен,1-удален,2-расторгнут',
 `last_mod_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Метка времени последней модификации записи',
 `rid` varbinary(16) DEFAULT NULL COMMENT 'Уникальный идентификатор записи в рамках БД',
 `5days_credit` double NOT NULL DEFAULT '0',
 `time_mark` bigint DEFAULT NULL COMMENT 'Временная метка',
 `promise_credit` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Обещанный платёж',
 `descr` text COMMENT 'Описание',
 PRIMARY KEY (`agrm_id`),
 UNIQUE KEY `unumber` (`number`),
 UNIQUE KEY `agreements_ubk_2` (`code`),
 KEY `uid` (`uid`),
 KEY `oper_id` (`oper_id`),
 KEY `archive` (`archive`),
 KEY `cur_id` (`cur_id`),
 KEY `owner_id` (`owner_id`),
 KEY `agreements_fk_parent_agrm_id` (`parent_agrm_id`),
 KEY `state` (`state`,`archive`),
 KEY `oper` (`oper_id`),
 CONSTRAINT `agreements_fk_parent_agrm_id` FOREIGN KEY (`parent_agrm_id`) REFERENCES `agreements` (`agrm_id`) ON DELETE RESTRICT ON UPDATE CASCADE,
 CONSTRAINT `agreements_ibfk_1` FOREIGN KEY (`cur_id`) REFERENCES `currency` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
 CONSTRAINT `agreements_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `accounts` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `agreements_ibfk_3` FOREIGN KEY (`oper_id`) REFERENCES `accounts` (`uid`) ON DELETE RESTRICT ON UPDATE CASCADE,
 CONSTRAINT `agreements_ibfk_4` FOREIGN KEY (`owner_id`) REFERENCES `accounts` (`uid`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=21105 DEFAULT CHARSET=utf8 COMMENT='Договоры пользователей (лицевые счета)'
источник

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество


CREATE TABLE `tarifs` (
 `tar_id` int NOT NULL AUTO_INCREMENT COMMENT 'Идентификатор тарифа',
 `descr` varchar(255) NOT NULL DEFAULT '' COMMENT 'Описание тарифа',
 `cur_id` int NOT NULL COMMENT 'Идентификатор валюты тарифа',
 `rent` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Величина аренды в валюте тарифа',
 `block_rent` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Величина аренды при блокировке (по балансу) в валюте тарифа',
 `usr_block_rent` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Величина аренды при блокировке (пользовательской) в валюте тарифа',
 `adm_block_rent` decimal(20,6) NOT NULL DEFAULT '0.000000' COMMENT 'Величина аренды при блокировке (административной) в валюте тарифа',
 `coef_low` decimal(20,6) NOT NULL DEFAULT '1.000000' COMMENT 'Коэффициент нижней границы стоимости',
 `coef_high` decimal(20,6) NOT NULL DEFAULT '1.000000' COMMENT 'Коэффициент верхней границы стоимости',
 `type` tinyint unsigned NOT NULL DEFAULT '0' COMMENT 'Тип тарифа: 0-кабельный агент, 1-RADIUS по объему, 2-RADIUS по времени, 3-Классическая телефония, 4-VoIP, 5-Периодические и разовые услуги',
 `act_block` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Применять автоматическую блокировку услуги: 0-нет, 1-да, 2-применять активную блокировку',
 `shape` int unsigned NOT NULL DEFAULT '0' COMMENT 'Ограничение полосы пропускания Кбит/с',
 `archive` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Тариф удален (флаг)',
 `used` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Тариф был назначен учетной записи (флаг)',
 `unavailable` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Тариф не доступен для назначения учетным записям (флаг)',
 `price_plan` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Денежный план: 0-служебный, 1-население, 2-хозрасчет, 3-бюджет (информационное поле)',
 `traff_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT 'Тарифицируемый трафик для кабельных агентов: 1-вх., 2-исх., 3-сумма, 4-превалирующий',
 `traff_limit` int unsigned NOT NULL DEFAULT '0' COMMENT 'Ограничение потребления трафика за период в Мб для type=0,1 или Мин для type=2 (0-нет ограничений)',
 `traff_limit_per` int NOT NULL DEFAULT '0' COMMENT 'Период в днях, на который установлено ограничение traff_limit (0-календарный месяц)',
 `daily_rent` tinyint DEFAULT NULL COMMENT 'Списывать аренду равномерно каждый день (флаг). По умолчанию - разовое списание в начале месяца. Для тарифов услуг NULL',
 `dynamic_rent` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Алгоритм расчёта арендной платы: 0 - фиксированная, 1 - динамическая, 2 - комбинированная',
 `shape_prior` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Приоритет правил изменения пропускной способности: 0-min значение, 1-по объему, 2-по времени, 3-max значение',
 `rent_multiply` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Для телефонии: списывать абон. плату пропорционально количеству присвоенных номеров (флаг)',
 `charge_incoming` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Тарифицировать входящие звонки: 0-нет, 1-по номеру А, 2-по номеру Б',
 `dyn_route` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Динамическая маршрутизация VoIP звонков: 0-не использовать, 1-LCR, 2-MWR',
 `voip_block_local` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Блокировать направления, не найденные в каталоге',
 `block_rent_duration` int unsigned NOT NULL DEFAULT '0' COMMENT 'Время автоматического отключения заблокированных учётных записей в сутках',
 `sale_dictionary_id` int DEFAULT NULL COMMENT 'Идентификатор услуги, связанной с тарифом',
 `descr_full` varchar(1024) NOT NULL DEFAULT '' COMMENT 'Расширенное описание тарифа',
 `uuid` char(40) DEFAULT NULL COMMENT 'UUID для интеграции с внешними системами',
 `additional` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Флаг дополнительного тарифа: 0-основной тариф, 1-дополнительный тариф',
 `link` varchar(255) NOT NULL DEFAULT '' COMMENT 'Ссылка на подробное описание тарифа',
 `service_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'ЦТВ/КТВ/Прочее(по умолчанию)',
 `rid` varbinary(16) DEFAULT NULL COMMENT 'Уникальный идентификатор записи в рамках БД',
источник

SP

Sergey Polichnoy in DBA - русскоговорящее сообщество

 `last_mod_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Метка времени последней модификации записи',
 `common_includes` int unsigned NOT NULL DEFAULT '0' COMMENT 'Общий объем услуги включенной в абон. плату (Мб). Переопределяет поле categories.includes когда категория включена в общую группу',
 `use_common_includes` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Определяет использование common_includes вместо categories.includes для категорий включенных в общую группу. Флаг (0/1)',
 `available_fl` tinyint(1) NOT NULL DEFAULT '-1' COMMENT 'Флаг доступности тарифа для назначения учетным записям физических лиц (флаг), -1 значение не назначалось, 0 тариф недоступен, 1 тариф доступен',
 `available_ul` tinyint(1) NOT NULL DEFAULT '-1' COMMENT 'Флаг доступности тарифа для назначения учетным записям юридических лиц (флаг), -1 значение не назначалось, 0 тариф недоступен, 1 тариф доступен',
 `check_active_hours` tinyint unsigned NOT NULL DEFAULT '1' COMMENT 'Учитывать 12-часовой порог при тарификации тарифа: 1-да, 0-нет',
 `rent_as_service` tinyint NOT NULL DEFAULT '0' COMMENT 'Флаг: абонентская плата тарифицируется как дополнительная услуга',
 `nds_above` tinyint DEFAULT NULL COMMENT 'Расчет НДС (флаг). NULL - наследуется из опций, 0 - включен в стоимость, 1 - не включен стоимость, 2 - не применяется',
 PRIMARY KEY (`tar_id`),
 KEY `archive` (`archive`),
 KEY `additional` (`additional`),
 KEY `tarifs_ibfk_1` (`cur_id`),
 KEY `tarifs_ibfk_2` (`sale_dictionary_id`),
 CONSTRAINT `tarifs_ibfk_1` FOREIGN KEY (`cur_id`) REFERENCES `currency` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
 CONSTRAINT `tarifs_ibfk_2` FOREIGN KEY (`sale_dictionary_id`) REFERENCES `sale_dictionary` (`record_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1535 DEFAULT CHARSET=utf8 COMMENT='Тарифные планы'
источник

LE

Lex E in DBA - русскоговорящее сообщество
ой не тебе
источник

У

Уруруборос Иванович... in DBA - русскоговорящее сообщество
Может не надо так кидать сюда а?
источник