Революция в мире баз данных: можно ли отказаться от ORM?

11 февраля 2026 г.

Вступление

В последние годы наблюдается рост интереса к использованию искусственного интеллекта в разработке программного обеспечения. Одной из наиболее перспективных областей применения ИИ является автоматизация написания кода. В частности, это касается написания запросов к базам данных. Но можно ли отказаться от использования ORM (Object-Relational Mapping) и перейти к более эффективным методам? Давайте рассмотрим эту проблему подробнее. Как сказал японский поэт Мацуо Басё: "Старая луна, новый месяц, и всё же остаётся неизменным".

Пересказ Reddit поста

Автор поста на Reddit поделился своим опытом использования ORM/ODM (Object-Relational Mapping/Object-Document Mapping) на протяжении всей своей карьеры. Однако после работы с агентным кодированием и использованием ИИ-помощника Claude, он пришёл к выводу, что ИИ-помощники лучше написания запросов к базам данных, чем ORM-код. Это связано с тем, что ИИ имеет доступ к огромному количеству тренировочных данных и может более эффективно писать запросы.

Суть проблемы

Проблема заключается в том, что ORM может быть лишней абстракцией, добавляющей сложность вместо того, чтобы упрощать разработку. Автор поста предложил новый подход, называемый "Raw+DC pattern", который заключается в использовании сырых запросов к базам данных в сочетании с Python-дата-классами на границе доступа к данным. Этот подход позволяет получить типовую безопасность, автозавершение кода в IDE и поддержку проверки типов, при этом исключая зависимости от ORM.

Детальный разбор проблемы

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

Практические примеры и кейсы

Автор поста предоставил пример кода и бенчмарки, демонстрирующие эффективность подхода "Raw+DC pattern". Он также отметил, что этот подход позволяет более эффективно использовать ИИ-помощников для написания запросов к базам данных.

Экспертные мнения

Автор: laughninja Поздравляю. Вы просто начали писать свою собственную ORM.
Автор: ruibranco Аргумент ИИ-дружественности действительно является наиболее убедительным. ORM изначально были представлены как абстракции для защиты разработчиков от сырого SQL, но если ваш ИИ-помощник пишет лучшие родные запросы, чем ORM-код, потому что есть 53 раза больше тренировочных данных, абстракция теперь добавляет сложность вместо того, чтобы удалять ее.

Возможные решения и рекомендации

Одним из возможных решений является использование подхода "Raw+DC pattern" для новых проектов или постепенное переход на этот подход в существующих проектах. Также можно рассмотреть использование ИИ-помощников для написания запросов к базам данных и автоматизации рутинных задач.

Заключение

В заключении можно сказать, что отказ от ORM и переход к более эффективным методам написания запросов к базам данных является перспективным направлением. Использование ИИ-помощников и подхода "Raw+DC pattern" может привести к повышению производительности и снижению сложности проектов. Как сказал японский поэт Мацуо Басё: "Старая луна, новый месяц, и всё же остаётся неизменным".


# Импортируем необходимые библиотеки
import pymongo

# Создаем клиент MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")

# Создаем базу данных
db = client["mydatabase"]

# Создаем коллекцию
collection = db["mycollection"]

# Добавляем документ в коллекцию
def add_document(document):
    # Добавляем документ в коллекцию
    collection.insert_one(document)

# Получаем все документы из коллекции
def get_documents():
    # Получаем все документы из коллекции
    documents = collection.find()
    return list(documents)

# Удаляем документ из коллекции
def delete_document(document_id):
    # Удаляем документ из коллекции
    collection.delete_one({"_id": document_id})

Этот пример кода демонстрирует использование сырых запросов к базе данных MongoDB в сочетании с Python-функциями для добавления, получения и удаления документов из коллекции.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE