Рубріки: Мнение

«Чистое зло»: разработчик перечислил недостатки Oracle SQL

Богдан Мирченко

«Мне нравится Oracle, но иногда он заставляет меня лезть на стену», — такими словами начал свой пост разработчик с сайта CodingToFreedom, который, мягко говоря, недоволен этой технологией и называет ее, вероятно в шутку, «чистым злом». Последней каплей стал момент, когда специалисту пришлось вести с программой «битвы эпических масштабов», в результате чего он потратил несколько месяцев на решение ошибок, устранение которых должно занимать не более пяти минут. 

Вот почему автор недолюбливает Oracle.

Отсутствие подробностей об ошибке

Каждый, кто когда-либо работал с Oracle SQL, знает, как программа сообщает об ошибках. Уведомления вроде «Invalid SQL statement» или «Missing Right Paranthesis» неинформативны, особенно, если в них нет информации о номерах строк с ошибкой. 

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

Уведомления от Oracle настолько же бесполезны, как если вы попросите у кого-то помощи и вас отправят искать решение в Google. 

Сообщения, которые вредят пользователю

Представьте, что в коде есть функция, которая должна вносить некоторые значения в таблицу базы данных. Вроде бы все просто, да? Но внезапно вы получаете сообщение с ошибкой «Table or view not found», что означает, что какой-то сервис-провайдер обращается к таблице, которой еще нет. 

Это не самая сложная ошибка, но чтобы ее устранить нужно определить, почему недостаточно существующих привилегий, а также отладить всю программу. И все это делается для того, чтобы в конечном итоге выяснить, что проблема не в представлениях, а в последовательностях, используемых для увеличения ID столбца, которому нужны привилегии для пользователя. 

Такое сообщение об ошибке хуже ошибки без описания, потому что оно дезинформирует и пускает по ложному пути. Мне пришлось устранять ту ошибку, которую указала программа. 

Oracle не знает, что делает Oracle

Каждый раз, когда пользователь пытается задать программе вопрос, она отвечает как тот парень из магазина, которого вы можете случайно перепутать с продавцом-консультантом — «извините, но я здесь не работаю». 

За решением можно пойти на форум программ, но искать помощи там, это все равно, что ждать внятного и быстрого ответа на свой вопрос на Quora. Конечно, пока ищите, вы узнаете много нового, но решение вашей проблемы будет где-то в недрах комментариев на StackOverflow. Причем сообщение будет помечено как дубликат, с кучей апвоутов и не будет отвечать на основной вопрос треда. 

Oracle непоследователен

Посмотрите на этот код. Что вы видите? 

Кроме того, что это выглядит безобразно и является возможным источником SQL-инъекции, сначала может показаться, что это рабочий код, но это не так. Хотя, если скопировать его в редактор и запустить, он запустится. Почему? Проблема в точке с запятой в конце скрипта. Функция EXECUTE IMMEDIATE везде работает по-разному. 

Файлы журнала могут убить ваш скрипт

Представьте, вы работает над кодом, который по всем правилам должен работать, но не работает. В отчаянии вы начинаете добавлять после каждого вызова функции логи, чтобы выяснить, где скрипт перестает работать (потому что, конечно, Oracle просто так вам об этом не скажет). Вы находите все баги и надеетесь, что теперь цикл пройдет без ошибок, но внезапно вы замечаете увеличение переменной счетчика. А затем он останавливается после 459-й итерации из примерно 900. 

Как оказалось, Oracle настолько не любит предоставлять пользователям вывод логов, что сам оператор ведения логов может привести к сбою скрипта, когда внутренний буфер вывода логов будет переполнен. Эта ошибка стала последней каплей моего терпения. На отладку у меня ушло несколько часов, а решение этой ошибки было довольно-таки простым: 

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024