Модели кругом проникли в нашу жизнь, даже простейший выход в сеть подробно логируется и анализируется всеми, начиная с софтовых гигантов и заканчивая мелким сайтом небольшой компании. Все хотят заработать на данных, все хотят делать целевые предложения и не засыпать нецелевыми тоннами спама людей, а дать предложения именно тому кому это надо, чтобы он, наконец, купил ваш продукт.
Как строятся модели мы уже рассказывали, но при этом обошли, казалось, самый популярный инструмент после excel — это SQL. Да, на нем тоже можно писать модели. И это даже очень удобно, так как в одном флаконе и доступ к данным (не нужны обвязки или прокладки типа hibernate), которые позволят обратиться и выбрать именно то, что надо.
Вот так, например, мы реализовали в последнем проекте простейшее дерево, сразу на лету используя данные из БД.
Но не следует забывать, что для каждого дела свой инструмент. Всё-таки SQL сиквел — это не совсем то, что нужно. Почему это так? Для примера возьмем недавний наш проект. Нужно было перенести в код простенькую модель дерева решений.
С помощью case when это сделать очень просто. Что мы и доказали.
Но!
Существует сложность — SQL не может на лету считать и тут же использовать столбцы. Конечно, можно поработать с временными таблицами (что собственно мы и сделали) или подзапросами.
Но основная проблема – у SQL существует предел и можно потерпеть фиаско, написав case when на сто строк , да еще и три раза и получить в итоге сообщение об ошибке.
В итоге — это все не оптимально.
«Юзаем» java!
Стандартный модуль для подключения к базе (рассматривался в статье Работа с БД с помощью Java и JDBC ). Чем он хорош? Он универсальный — написал раз и «юзаешь» вечно.
Потом задумываем структуру, где все это будет храниться.
Далее культурно, построчно заполняем базу – это стильно, модно и молодёжно, а еще безопасно. И никакой админ не покарает тебя за выборку 100500 строк в таблицу, так как ты загружаешь их последовательно и можно грузить хоть миллион, хоть два (нам надо было около 540 млн срок).
Ну и потом, вуаля, и из структуры обращаемся к тому, что надо – производим нужные действия (в случае дерева — это сравнение и выбор через простой if else).
Выдаем итог, тут ничего сложного, но если интересно, то примерно вот так:
Таким образом, мы рассмотрели два варианта: через SQL и с помощью Java. И вывод простой – не увеличивайте свои страдания, не делайте модели через SQL :)