Post

SQL Alchemy[1] - 개요 읽기

https://docs.sqlalchemy.org/en/14/intro.html 공식문서 따라하는 글

SQLAlchemy를 사용하게되는 이유는 앞으로 사이드 프로젝트에서 사용해보자는 이야기가 나와서이다. 비동기로 처리하는 방법을 알아오라고 해서 이것 또한 document를 읽게 되었다.

☑️ 개요

SQL ToolkitObjct Relational MapperPythonDataBase환경에서도 잘 작동할 수 있게 도와주는 툴이다.

SQL Alchemy는 여러가지 영역이 기능별로 구분되는데, 이 영역들은 개별적으로 사용되거나 혼합하여 사용할 수 있다.

SQL Alchemy의 주로 구성되는 요소는 밑의 그림과 같다.

SQLAlchemy ORM, SQLAlchemyCore라는 두 영역이 있다.

CoreSQLAlchemySQL의 중요 부분을 포함하고 있다. 또한, database 통합과 description services를 제공한다. Core의 가장 중요한 부분은 SQL Expression Language라는 것이다.


☑️ SQL Expression Language

  • SQL Expression LanguageORM패키지에 의존적이지 않아 독립적이고, 컴파일 가능한 객체로 표현되는 SQL표현식을 구성하는 시스템을 제공한다.

  • Inserts, updatesdelete는 각 문과 함께 사용할 매개 변수를 나타내는 dictionaries와 함께 이러한 문을 나타내는 SQL로 표현된 개체를 전달함으로써 수행된다.

  • database schema에 매핑된 도메일 모델이 동작되기 위해서 ORMCore 기반으로 빌드를 하게 된다. ORM을 사용하면 대부분의 경우에는 Core를 사용할때 동일한 방식으로 SQL표현식을 구성한다. 하지만 데이터베이스에 있는 business objects의 영속성을 나타내는 DMLunit of work라는 패턴을 사용하여 변화 가능한 오브젝트에 대한 변환구문을 자동화한다. unit of work라는 패턴은 가변 객체에 대한 상태 변화를 INSERT, UPDATE, DELETE 구조체로 변환하는데, 그런 다음 사용자의 필요에 의해 호출 되어진다.

  • SELECT문은 ORM의 자동화와 객체중심의 쿼리에 의해 성능이 올라갔다.

  • CoreSQL Expression Language에 의해 불변성을 중심으로 하는 프로그래밍 패러다임인 스키마 중심의 데이터베이스 뷰를 제공하는 반면, ORM은 객체지향적이고 가변가능한 객체에 대해 효과적인 프로그래밍 패러다임을 가진 도메인 중심의 데이터베이스 뷰를 제공한다.

  • 관계형 데이터베이스는 가변이 가능한 서비스 이다. 때문에 ORM은 상태지향적인것을 처리하니까 Core/SQL Expression Language는 명령지향적으로 처리한다.

This post is licensed under CC BY 4.0 by the author.