С какими СУБД (DBMS) вы работали?

Ответ

Работал с реляционными и NoSQL СУБД.

Реляционные (SQL):

  • PostgreSQL, MySQL — для большинства веб-приложений.
  • Oracle — в корпоративных проектах.

NoSQL:

  • MongoDB (документная) — для гибких схем данных и JSON-документов.
  • Cassandra (колоночная) — для работы с большими объемами данных и высокой записной нагрузкой.

Пример низкоуровневого подключения через JDBC (PostgreSQL):

String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "user";
String password = "pass";

// try-with-resources для автоматического закрытия ресурсов
try (Connection conn = DriverManager.getConnection(url, user, password);
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT id, name FROM users")) {

    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        System.out.printf("User: %d - %s%n", id, name);
    }
} catch (SQLException e) {
    e.printStackTrace(); // В реальном проекте — структурированное логирование
}

Для повышения продуктивности использовал:

  • ORM: Hibernate, JPA (Java Persistence API).
  • Библиотеки высокого уровня: Spring Data JPA, MyBatis.
  • Миграции схемы: Liquibase, Flyway.

Опыт включает проектирование схем, оптимизацию запросов, настройку индексов и работу с транзакциями.

Ответ 18+ 🔞

Да ты посмотри, какой я универсальный солдат, блядь! С базами данных работал, как с родными, и с реляционными, и с этими, NoSQL, нахуй.

Реляционные (SQL), классика жанра:

  • PostgreSQL, MySQL — это как хлеб с маслом, для 90% веб-приложений хватает за глаза, а иногда и за жопу.
  • Oracle — ну это уже корпоративная тягомотина, серьёзные дядьки в галстуках, бюджеты овердохуищные, но тоже приходилось.

NoSQL, там где схемы пляшут:

  • MongoDB (документная) — когда схема данных меняется чаще, чем твои носки, и всё в JSON'ах носится. Удобная мартышлюшка, ей-богу.
  • Cassandra (колоночная) — это когда данные льются на тебя тоннами, а записывать надо быстрее, чем ты успеваешь материться. Для масштаба, блядь.

Вот, смотри, как это выглядело на низком уровне, через JDBC к PostgreSQL. Чистый матан, без ORM'овских прибамбасов:

String url = "jdbc:postgresql://localhost:5432/mydb";
String user = "user";
String password = "pass";

// try-with-resources, чтоб не забыть закрыть, а то коннекты кончатся — пиздец
try (Connection conn = DriverManager.getConnection(url, user, password);
     Statement stmt = conn.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT id, name FROM users")) {

    while (rs.next()) {
        int id = rs.getInt("id");
        String name = rs.getString("name");
        System.out.printf("User: %d - %s%n", id, name);
    }
} catch (SQLException e) {
    e.printStackTrace(); // В продакшене так, конечно, не делают, а то начальство ебёт
}

Но чтобы не ебаться с этим ручным управлением каждый день, использовал, естественно, нормальные инструменты, а не изобретал велосипед:

  • ORM: Hibernate, JPA — чтобы объекты в базу сами маппились, волшебство, блядь.
  • Библиотеки повыше: Spring Data JPA, MyBatis — там вообще заебись, объявил интерфейс и всё, пиши меньше, делай больше.
  • Миграции схемы: Liquibase, Flyway — чтобы не орать «ой, бля, я забыл добавить колонку на проде», а всё версионировать и применять автоматически.

В общем, опыт полный: от проектирования схемы (чтобы не получилась хитрая жопа), оптимизации запросов (индексы — наше всё, ёпта), до транзакций, где если что-то пошло не так — откатываем всё нахуй, как будто и не было.