Comments 10
Поставил Linux? Напиши об этом статью.
Вообще, местами примерно так и получилось, и многие вещи остались непонятны. Скажем, ограничения целостности оно сначала отключит, а потом включит. А они будут удовлетворяться? Не увидел в статье ничего, что говорило бы о генерации связей между таблицами в виде foreign keys. При этом эта тема — одна из самых интересных при генерации вот таких вот наборов данных для тестирования — независимые друг от друга случайные данные почти любой инструмент умеет строить, тут много ума не нужно.
В целом согласен с вами, что без ссылочной целостности генерация данных в общем-то ценности никакой не несет, даже если рассматривать кейс подобный моему, когда надо было быстро нагенерить данные для проверки работоспособности пользовательского интерфейса.
Ну, не так уж чтоб совсем никакой, просто генерация без ее учета — ну это примерно строк на 100 кода, наверное, я пробовал такое писать, если без фанатизма — то это задачка совсем простая и базовая. И конечно же ее все просто обязаны уметь по умолчанию.
Если в базе не было внешних ключей (или других ограничений), то, наверное ценность есть) А вот если ключи были, дропнулись при генерации и не восстановились, то это скорее вред)
С ссылочной целостностью интересен скорее аспект, о котором вы выше говорили. То есть не просто соблюсти ограничения (этого ведь и перебором можно достичь), а попытаться смоделировать связи, распределение которых близко к реальному.
Когда в статье главным драйвом в решении проблемы была Лень, это красный флаг, не читать дальше.
По предмету статьи всё супер, было очень полезно узнать, что такой инструмент существует. Да и вообще, знать инструменты очень важно, спасибо за статью.
У меня лишь одно замечание: зачем трогать хост, есть можно всё в контейнерах сделать? Если база всё равно локальная, то почему бы её не поднять в контейнере? Можно написать docker-compose.yml файл с двумя сервисами: базой и этой прогой на go. Они автоматически объединятся в виртуальную сеть и будут доступны друг другу по хостнэйму, совпадающем у с именем контейнера. Таким образом, генерация новой наполненной базы сведётся к выполнению `docker-compose up -d`. И не нужно будет сеть хоста в докер кидать, ибо это не очень хорошо так делать. Кстати, помимо использования сети хоста, конкретно у докера есть ещё пролом с docker.host.internal, чтобы получать доступ к локалхостовым серверам
Мир должен знать, как я генерировал mock-объекты