Как жить без IntelliJ IDEA? Часть №4. Database Client

от автора

Ранее команда Spring АйО выяснила, что жить без IntelliJ IDEA Ultimate можно, пока Community версия доступна для скачивания без ограничений. И даже если её скачивание станет невозможным, всегда можно будет собрать Community вручную из открытых исходных кодов.

Во второй статье из цикла мы разобрались, как научить Community версию понимать Spring. В третьей рассмотрели возможные альтернативы встроенному в IDE HTTP клиенту, а сегодня узнаем, есть ли альтернативы полюбившейся многим возможностям Ultimate общаться с базой данных через удобный UI прямо в среде разработки.

Что такое DataGrip?

Для начала давайте разберёмся, как в Ultimate реализована работа с базами данных. Функциональность поставляется в виде плагина под названием Database Tools and SQL. Этот плагин является частью Ultimate, но также существует как самостоятельная IDE, специально созданная для работы с данными и имеющая название DataGrip.

То есть де-факто, нам нужно узнать, есть ли альтернатива целой IDE, из основных возможностей которой стоит перечислить следующие:

  • Поддержка 26 различных баз данных, в том числе NoSQL

    • Навигация по объектам

    • Построение диаграмм

    • Генерация скриптов миграций

  • Работа с данными

    • Табличный редактор для добавления/удаления/редактирования/клонирования данных

    • Импорт/экспорт в CSV, JSON, HTML и т.д.

    • Сравнение наборов данных

  • Написание SQL запросов: умное автодополнение, проверки кода, выделение ошибок, быстрые исправления и рефакторинги

  • Выполнение запросов

  • Хорошая интеграция с Java/Spring приложением

    • Подсветка и автодополнение SQL-запросов в java-строках с учетом настроенного соединения к базе данных

    • Навигация из java-кода к визуальным элементам DataGrip

Database Navigator

Конечно, нам, как Java разработчикам, хочется как можно меньше покидать IDE. Поэтому мы начали искать замену DataGrip в маркетплейсе плагинов, в надежде найти бесплатное и подходящее нам решение. Одним из самых популярных плагинов в JetBrains Marketplace является Database Navigator.

По сравнению с DataGrip, Database Navigator поддерживает меньшее количество СУБД, но среди них представлены самые популярные реляционные СУБД: Oracle, MySQL, SQLite, PostgreSQL. Также в числе поддерживаемых СУБД разработчик написал “Any JDBC compliant database (EXPERIMENTAL)”. Так что, в теории, уже сейчас можно попробовать подключиться к любой базе данных, для которой есть JDBC драйвер. Однако, учитывая проблемы, о которых мы поговорим далее, связанные с использованием не experimental СУБД в контексте Database Navigator, особо рассчитывать на эту фичу не стоит.

Оба плагина позволяют просматривать структуру базы данных прямо в IDE. Визуально DataGrip кажется более удобным и приятным. Однако, с точки зрения функциональности, оба решения справляются практически одинаково.

Database Navigator предлагает автодополнение и подсветку синтаксиса при написании SQL-кода.

Но очень часто Database Navigator ругается на абсолютно валидный синтаксис, причём не самых сложных SQL выражений:

Приятно, что запросы (даже которые плагин считает невалидными :D) получается запускать прямо из IDE:

Однако, некоторые моменты не всегда интуитивно понятны. Например, по умолчанию режим «Auto commit» выключен, поэтому запросы не выполняются сразу после их запуска. Может быть это и не было бы проблемой лично для меня, если бы у инструмента была документация или какие-то маркетинговые материалы, благодаря которым я бы смог ознакомиться с основными возможностями инструмента, но таковых не имеется. 

В целом, подобные моменты, конечно, довольно субъективны, и инструмент всегда можно настроить “под себя” (если обрести тайное знание, как именно).

Но, вот, что не субъективно, так это отсутствие какой-либо интеграции с Java/Spring приложением. Да, заинжектировать язык в строки получится:

И в них даже будет работать подсветка синтаксиса и автодополнение по ключевым словам:

Но, вот, подсказок, с учетом конкретного соединения к базе данных, как это реализовано в DataGrip, Database Navigator, к сожалению, предоставить не может.

Плагин заслуживает оценку 2,5–3 из 5. Интеграция с IDE выглядит перспективно, но пока ей не хватает качества и глубины. Сильно разочаровывает отсутствие документации и маркетинговых материалов: без них освоение инструмента становится настоящим испытанием. Особенно раздражают многочисленные ложные срабатывания при валидации SQL-кода. Единственный приятный момент — плагин распространяется под лицензией Apache 2.0. Может найдутся энтузиасты, которые смогут сделать из гнилого леса избу?)

DBeaver – панацея от всех проблем

Одним из самых популярных инструментов для работы с базами данных является DBeaver.

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

Инструмент выделяется тем, что его бесплатная open-source версия поддерживает множество СУБД, делая его доступным для широкой аудитории разработчиков и составляя в этом плане серьезную конкуренцию DataGrip. 

Длинный список
  • MySQL

  • MariaDB

  • PostgreSQL

  • Microsoft SQL Server

  • Oracle

  • DB2

  • SAP® MaxDB®

  • Informix

  • Sybase®/SAP® ASE

  • Mimer SQL

  • InterSystems Caché

  • Firebird

  • Ingres

  • Yellowbrick

  • Babelfish

  • YugabyteDB

  • Virtuoso

  • CUBRID

  • DuckDB

  • Apache Calcite Avatica

  • Apache Kylin

  • Data Virtuality

  • Denodo 8

  • Dremio

  • EDB

  • Google Cloud Spanner

  • H2GIS

  • HSQLDB

  • InterSystems IRIS

  • Trino

  • CrateDB

  • Monetdb

  • OceanBase

  • HeavyDB (OmniSciDB)

  • Openedge

  • Pervasive SQL

  • Salesforce Data Cloud

  • SQream DB

  • Fujitsu Enterprise Postgres

  • Materialize

  • TiDB

  • Salesforce

  • Kafka (ksqlDB)

  • Dameng (DM8)

  • Altibase

  • RisingWave

  • GaussDB

  • Greenplum

  • Exasol

  • Vertica

  • Teradata

  • SAP® HANA®

  • Netezza

  • Azure Databricks

  • Ocient

  • Kognitio

  • PrestoDB

  • ClickHouse

  • StarRocks

  • MongoDB

  • Couchbase

  • CouchDB

  • Azure Cosmos DB

  • AWS Athena

  • AWS Redshift

  • AWS DynamoDB

  • AWS Aurora

  • AWS DocumentDB

  • AWS Keyspaces

  • AWS Timestream

  • Google Bigtable

  • Google BigQuery

  • Amazon Neptune

  • SQL Azure

  • Snowflake

  • SingleStore

  • NuoDB

  • Oracle NetSuite

  • Oracle Autonomous Data Warehouse

  • Oracle Autonomous Transaction Processing

  • Oracle Autonomous JSON Database

  • Cloud SQL

  • AlloyDB

  • Firestore

  • Apache Hive

  • Spark Hive

  • Apache Drill

  • Apache Phoenix

  • Apache Impala

  • Gemfire XD

  • Apache Ignite

  • Apache Kyuubi

  • Cloudera

  • CockroachDB

  • SnappyData

  • ScyllaDB

  • Apache Cassandra

  • Redis

  • Timescale

  • InfluxDB

  • Machbase

  • TDengine

  • Neo4j

  • OrientDB

  • Elasticsearch

  • Solr

  • OpenSearch

  • Open Distro ElasticSearch

  • SQLite

  • HSQLDB

  • H2

  • Apache Derby / Java DB

  • Microsoft Access

  • Windows Management Instrumentation

  • DBF

  • Raima

К тому же, это проверенное временем решение: регулярные обновления, исправления и широкое комьюнити дают надежды на стабильность работы DBeaver и скорость исправления недочётов. Даже вопросов на StackOverflow с тегом dbeaver в 1.5 раза больше, чем с тегом datagrip.

С помощью DBeaver удобно изучать структуру базы данных, запускать SQL-скрипты и даже создавать ER-диаграммы.

В целом, инструмент, именно как клиент для работы с базами данных, отличный. Универсальный, бесплатный, интуитивно понятный и проверенный временем, но в контексте замены DataGrip ему не хватает лишь одного – интеграции с IDE. Поэтому общая оценка 4 из 5.

pgAdmin, phpMyAdmin и mongo-express – братья наши меньшии

Помимо универсального решения в виде DBeaver, которое отлично подойдет для большинства сценариев работы с многими СУБД, на рынке существуют и заточенные под каждого конкретного вендора клиенты. К наиболее популярным можно отнести pgAdmin для работы с PostgreSQL, phpMyAdmin для MySQL и MariaDB, mongo-express для MongoDB и т.д.

Минусы и плюсы у всех этих решений практически идентичны с теми, которые мы перечислили для DBeaver. Но, конечно же, ввиду ориентированности под конкретную СУБД, каждое из решений предоставляет набор некоторых уникальных возможностей, адаптированных под особенности каждой СУБД. 

Например, одной из таких возможностей является встроенный планировщик задач (pgAgent) в pgAdmin, который позволяет создавать и управлять задачами автоматизации для PostgreSQL. В DBeaver в свою очередь есть аналог, который называется Task Scheduler, но доступен он только в платной версии. 

Интеграции с IDE в том виде, которая реализована в DataGrip эти инструменты, конечно же, не предоставляют. Но по крайней мере, есть возможность быстро их получить в виде Docker Compose сервисов с использованием Amplicode:

Здесь даже есть кое-какая интеграция в плане визуального отображения: можно увидеть запущен ли сервис (1), и, если да, то перейти к нему через inlay-иконку (2):

Не уверены, что это можно отнести к плюсам dedicated DB-клиентов по сравнению с DBeaver, скорее к минусу Amplicode, что DBeaver (а точнее CloudBeaver) в виде Docker Compose сервиса он сгенерировать не предлагает 😉 Ребята – ждём!

CLI всему голова

После статьи про HTTP-клиент мы точно не могли обойти стороной CLI инструменты, а также TUI, которые явно не оставили равнодушными многих из разработчиков. К тому же, отрицать популярность psql сложно. Для простых запросов воспользоваться им, пожалуй, будет действительно быстрее и удобнее, чем «пробираться» через UI рассмотренных выше решений.

А для тех, кто хочет некоторого промежуточного решения между голой командной строкой и навороченным UI, оставим ссылки на следующие TUI DB-клиенты:

Заключение

Подводя итог, можно с уверенностью сказать, что DBeaver — это профессиональный инструмент, который несмотря на отсутствие интеграции с IDE выделяется высоким качеством и удобством работы. Database Navigator же делает ставку на то, чтобы воспроизвести UX клиента от JetBrains, оставляя за скобками функциональность и качество реализации. Карго-культ во всей красе…

По мнению команды Spring АйО, в качестве альтернативы DataGrip стоит обратить внимание как на DBeaver, так и на более узкоспециализированные клиенты вроде pgAdmin, phpMyAdmin и другие. Которые сейчас довольно легко и просто распространять вместе с проектом в docker-compose файлах.

А какой DB-клиент используете вы? Расскажите про своего фаворита в комментариях 🙂


Присоединяйтесь к русскоязычному сообществу разработчиков на Spring Boot в телеграм — Spring АйО, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано.


ссылка на оригинал статьи https://habr.com/ru/articles/866500/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *