Форум сайта python.su
На Django создаю проект, в котором ORM на основании объектов модели создает таблицы в Postgres. Хочется понимать в чем проявляется смысл объектно- реляционной БД, чтобы создавать модели, которые будут эффективно писаться / храниться / читаться. Подобно тому, как в реляционной БД можно создать неэффективные таблицы, которые снизят производительность приложения, так и я опасаюсь выбора неправильной архитектуры объектов моделей.
Может кто- то объяснить (книжки на эту тему дружно молчат) в чем собственно выражается объектность Postgres и как это влияет на проектирование объектов моделей (по которым ORM создаст таблицы)?
Офлайн
King_cat
Postgres - реляционная СУБД, питон - объектно-ориентированный язык, ОРМ - это технология позволяющая сохранять объекты питона в реляционной СУБД. Да просто фреймворк поверх питона, который преобразует объекты в строки таблиц и наоборот, плюс там построитель запросов. Postgres при этом никак не пострадал, он об ОРМ ничего не знает, Джанга ему присылает нормальный SQL, и там в бэкграунде невидимо все общение в терминах табличных баз данных - соединенние, курсор, запрос, коммит, роллбэк. Да просто все как мычание, ты пишешь
Model.object.filter(date__gt=today)
Select * from Model where date="2022/07/11"
Отредактировано FishHook (Июль 11, 2022 22:40:33)
Офлайн
FishHook
Postgres - реляционная СУБД
…
не стал от этого постгресс другим, это классическая табличная СУБД
Отредактировано King_cat (Июль 12, 2022 06:56:40)
Офлайн
Это говорит что она работает с обьектами а не документами как например монга
Офлайн
ZerG
Это говорит что она работает с обьектами а не документами как например монга
Офлайн
King_catPostgreSQL - реляционная СУБД, и в этом смысле, если вы изучали ANSI SQL, то PostgreSQL со своими нюансами - как без этого - но работает очень похоже на то, как работают все RDBMS, будь то Оракл или SQLite. С другой стороны - это большой продукт с кучей своих уникальных решений, иначе в нем не было бы смысла, например наследование таблиц (уже запахло ООП), составные типы данных или хранение массивов.
И в чем эта работа с объектами выражается?
Офлайн
коротко отвечая на ваши вопросы в стартовом посте
и как это влияет на проектирование объектов моделей (по которым ORM создаст таблицы)?никак ровным счетом не влияет, модели в Джанге не зависимы от используемой СУБД
King_catможно читануть вот это
в чем собственно выражается объектность Postgres, книжки на эту тему дружно молчат
King_catэффективность вы скорее всего потеряете на неправильно написанных запросах нежели на неэффективной структуре. Любая ОРМ страдает N+1 проблемой и Джанга не исключение, наделать тормозных запросов можно запросто. Вы не о том печалитесь
как в реляционной БД можно создать неэффективные таблицы
Офлайн
FishHook
можно читануть вот это
http://citforum.ru/database/articles/manifests/art_28_3_3.shtml
FishHook
Вы не о том печалитесь
Офлайн
King_catтогда ваш вопрос о чем? Как я уже написал выше, ОРМ не использует 95% возможностей Postgres
Отказываться от ORM- значительно более сложная процедура
King_catне изменилось ничего
и возможно на данный момент все полностью изменилось
King_catстандарт ANSI SQL возможности которого эксплуатирует Джанга принят в 1986м
но статья написана в 2003 году
Офлайн
Я просто вбил название топика в гугл и вторая ссылка
https://habr.com/ru/post/93356/
ниблогодорити
Офлайн