• ORM에 대해 알아보자

    2017. 7. 7. 01:24

    by. 위지원

    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

    대화의 장 💬