Pull to refresh

Comments 10

Поставил Linux? Напиши об этом статью.

Вообще, местами примерно так и получилось, и многие вещи остались непонятны. Скажем, ограничения целостности оно сначала отключит, а потом включит. А они будут удовлетворяться? Не увидел в статье ничего, что говорило бы о генерации связей между таблицами в виде foreign keys. При этом эта тема — одна из самых интересных при генерации вот таких вот наборов данных для тестирования — независимые друг от друга случайные данные почти любой инструмент умеет строить, тут много ума не нужно.
Спасибо, внес в статью небольшие правки, акцентирующие внимание на том, что сгенерированные данные удовлетворяют ограничениям целостности. Вообще мне казался достаточно очевидным тот факт, что если ограничения ссылочной целостности восстанавливаются, то и данные в таблицах, в том числе внешние ключи, будут удовлетворять этим ограничениям.
Ну, очевидный факт, что инструмент попробует включить ограничения. А вот получится ли у него — кто знает :) В общем, это на самом деле наиболее интересная тема для рассмотрения таких инструментов, на мой взгляд — и не только удовлетворение ограничений, но и скажем симуляция таких вещей, как партиционирование. Т.е. сможет ли скажем инструмент построить данные так, чтобы они были более-менее правдиво разбросаны по партициям, и приложение вело бы себя похоже с точки зрения производительности тоже. И мне кажется, что тонкая настройка или программирование обычно для подобных целей и требуется.
В контексте данного инструмента авторы описывают последний шаг: LOADS constraints that it had backed up (Mock-data can fail at this stage if its not able to fix the constraint violations). При этом в логе отражается, все ли ограничения были восстановлены.
В целом согласен с вами, что без ссылочной целостности генерация данных в общем-то ценности никакой не несет, даже если рассматривать кейс подобный моему, когда надо было быстро нагенерить данные для проверки работоспособности пользовательского интерфейса.
>никакой не несет
Ну, не так уж чтоб совсем никакой, просто генерация без ее учета — ну это примерно строк на 100 кода, наверное, я пробовал такое писать, если без фанатизма — то это задачка совсем простая и базовая. И конечно же ее все просто обязаны уметь по умолчанию.
>Ну, не так уж чтоб совсем никакой
Если в базе не было внешних ключей (или других ограничений), то, наверное ценность есть) А вот если ключи были, дропнулись при генерации и не восстановились, то это скорее вред)
С ссылочной целостностью интересен скорее аспект, о котором вы выше говорили. То есть не просто соблюсти ограничения (этого ведь и перебором можно достичь), а попытаться смоделировать связи, распределение которых близко к реальному.

Когда в статье главным драйвом в решении проблемы была Лень, это красный флаг, не читать дальше.

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

По предмету статьи всё супер, было очень полезно узнать, что такой инструмент существует. Да и вообще, знать инструменты очень важно, спасибо за статью.

У меня лишь одно замечание: зачем трогать хост, есть можно всё в контейнерах сделать? Если база всё равно локальная, то почему бы её не поднять в контейнере? Можно написать docker-compose.yml файл с двумя сервисами: базой и этой прогой на go. Они автоматически объединятся в виртуальную сеть и будут доступны друг другу по хостнэйму, совпадающем у с именем контейнера. Таким образом, генерация новой наполненной базы сведётся к выполнению `docker-compose up -d`. И не нужно будет сеть хоста в докер кидать, ибо это не очень хорошо так делать. Кстати, помимо использования сети хоста, конкретно у докера есть ещё пролом с docker.host.internal, чтобы получать доступ к локалхостовым серверам

Спасибо за отзыв и дельное замечание про докер. Добавил в статью ссылку на ваш комментарий.

Only those users with full accounts are able to leave comments. Log in, please.