-
ORM ( object-relational-mapping )
-oop 언어와 데이터를 다루는 rdbms와의 상이한 시스템을 매핑하여 쉽게 데이터 과련 oop 프로그래밍을 쉽게 하도록 하기 위한 기술
-oop의 class구조와 object-graph 는 rdbms의 table,relation 으로 표현 가능한데 서로 표현방식에 차이가 있기때문에 이를 매핑을 통해 변환을 해주어야 한다. 이때 중간에서 소통을 해주는 친구가 orm!
-개발자는 oop에 의한 개발에만 집중하고 rdms적인것은 조금만 고려하면 됨
-dataSet,DataTable,sql문을 중심으로 한 data와 html,js만 있는 단순 app이 oop의 다양한 list,repository등의 다양한 기술ㅇ로 업그레이드 된 app을 완성
..등등의 갱장한 장점등이 있다.
자..파이썬에서 둘러보자 아래 사진이 아주 설명을 잘해주고 있는 것 같다.
원래 쿼리문을 orm 방식으로 하면 오른쪽과 같이 변경할 수 있음
SELECT * FROM USERS WHERE zip_code=94107; ☞ users = Users.objects.filter(zip_code=94107)
orm 을 사용하여야 하는가에 대하여..
-python orm 라이브러리는 관계형 db에 엑세스하는데 반드시 필요로 하진 않음, 단순 매핑을 도와줌
-저수준 액세스는 postgreSQL이나 mysql 같은 경우는 db connector lib로 제공됨
-아래의 표는 orm이 web framework,connector,db에서 작동하는 방법을 보여줌_sqlAlchemy가 다양한 곳에서 쓰이는 것을 확인
단점
-임피던스 불일치
-relationship table과 application object간에 데이터를 이동할대 발생하는 어려움을 포괄하는 용어
-개발자가 객체를 사용하는 방식과 데이터가 저장되고 관계형 테이블에 결합되는 방식이 다름
-성능 저하 가능성
-응용프로그램 코드를 해당 sql문으로 변환 할때 성능이 저하됨,제대로 조정되지 않을 수 있음
-db 복잡을 application 코드로 옮김
-application과 db 저장 프로시저간에 코드를 분할하는 대신 파이썬 코드의 총량을 증가
파이썬 orm 구현
-파이썬으로 작성 된 주 orm은 아래와 같음
1.sqlalchemy
2.peewee
3.django orm
4.ponyorm
5.sqlobject
나는... sqlalchemy를 사용
왜냐하면 https://www.reddit.com/r/Python/comments/4tnqai/choosing_a_python_ormpeewee_vs_sqlalchemy/ 을 읽고..
일단 사용을 위해 설치부터 해놓자!
$sudo pip install sqlalchemy
출처url
http://docs.sqlalchemy.org/en/latest/orm/tutorial.html
http://debop.blogspot.kr/2012/02/orm-object-relational-mapping.html
https://www.fullstackpython.com/object-relational-mappers-orms.html
http://pythoncentral.io/introductory-tutorial-python-sqlalchemy/
http://bytefish.de/blog/first_steps_with_sqlalchemy/
'2017년 > Database' 카테고리의 다른 글
HBASE란? (0) 2017.07.21 R이란? (0) 2017.07.12 DB Browser for SQLite (0) 2017.07.05 sas university edition을 사용해보자 (0) 2017.06.29 sqlite란 2부 (0) 2017.06.29