티스토리 뷰

hacking/nodejs

나의 Node.js 답사기 - ORM 편

Ho Eyo He Hum! iolo 2014.09.27 17:03

주의: 예제 코드 따위(!) 없음.


최근 회사 일로 nodejs에서 mysql을 쓰고 있는데, node-mysql로 날코딩 - 특히 connection pooling, validation, pyramid-of-doom - 하는 게 맘에 걸려서 ORM 비슷한 걸 써볼까 궁리질 중...


구글링을 해보니 역시나 비슷한 고민들이 스택에 넘치네...:


메이저한 것들로는:

  • sequelize.js
    • 2.0.0-rc1, active, mysql/maria/postgresql/sqlite
    • mongoose 스타일.
    • 특징: read/write 분리된 커넥션풀. promise 지원. 문서 좋음. CLI 쓸만해보임.
    • 단점: 타이핑이 어려움.. sequelize라니... sequelize라니... sequelize라니... Orz
  • jugglingdb
    • 0.3.0, active, mysql/postgresql/sqlite3/couchdb/mongodb/redis/neo4j+
    • @outsideris 님의 선택
    • 특징: man page 스타일의 문서
    • 단점: man page 스타일의 문서?!
  • bookshelf.js
    • 0.7.7, active, mysql/maria/postgresql/sqlite+
    • 특징: backbone 스타일 모델, promise 지원.
  • node-orm2
    • 2.1.19, active, mysql/maria/postgresql/sqlite/mongdb/redshift+
    • 장점: 이름이 먹어 줌. 모듈 이름이 orm!!! require('orm') orm이라니 orm이라니 orm...
    • 단점: 이름이 평범함. 구글링하기가 너무 힘들어 ㅠ..ㅠ
    • 주의: 구글 검색하면 앞쪽에 나오는 node-orm.readthedocs.org은 무시할 것. 포크하고 2년 묵힌 쓰레기임.
    • 참고: out-of-box promise 지원
  • persistence.js
    • 0.3.0, +6M, mysql/sqlite/websqlstorage(browser)/localstorage(browser)+
    • 특징: 브라우저 지원...ㄷㄷㄷ
    • 예전에 좋은 문서가 있었던거 같은데... 도메인 연장 안했나 봄.


그 외에도 npmjsnodejsmodules를 뒤져보면:

  • waterline
    • 0.10.9, active, mysql/postgresql/mongodb/redis+
  • knex.js
    • 0.6.22, active, mysql/maria/postgresql/sqlite+
  • backbone-sql
    • 0.6.4, active, mysql/postgresql/sqlite
  • lightorm
    • 0.1.3, +8M, mysql+, typescript
  • mysql-orm
    • 0.0.8, +2M, mysql
  • nobatis
    • 0.0.7, +2Y, maria, 내가 2년전에 만들다 버린 프로젝트... 그냥 끼워넣어 봄ㅋ


끝도 없이 나옴...

선택지가 많다는 것은... 뭔가 마땅한 것이 없다는 얘기...


본격적인(?) ORM 중에서는 sequelize.js, bookshelf.js, jugglingdb 그리고 waterline 정도가 가장 활발하게 개발이 이루어지고 있는 듯.


정리해보면:

  1. 오랜만에 nodejs로 mysql을 사용하는데...
  2. @outsideris님의 슬라이드를 보고
  3. jugglingdb를 쳐다보다가...
  4. promise 지원이 없어서...
  5. sequelize.js로 마음이 살짝 기울었다가...
  6. sequelize.js 팀의 셀프 디스 벤치마크를 보고
  7. 마음이 흔들려서...
  8. node-orm2를 다시 거들떠 보다가...
  9. 내가 만들다만 nobatis가 생각나서...
  10. 오랜만에 clone 해서 뜯어고치다가...
  11. 이게 뭐하는 짓인가 싶어서...
  12. 블로그를 글을 쓰고 있음...(이걸 왜 정리하는 거냣?)


(출처: http://blog.daum.net/minyounghung/80)


결론은... 기승전블로그 Orz


may the SQL be with you...

저작자 표시 동일 조건 변경 허락
신고

'hacking > nodejs' 카테고리의 다른 글

나의 Node.js 답사기 - date & time 편  (0) 2014.10.04
나의 Node.js 답사기 - job scheduler 편  (0) 2014.10.03
나의 Node.js 답사기 - ORM 편  (4) 2014.09.27
댓글
  • 프로필사진 Alsid 저도 Node.js ORM 때문에 해메다가 문득 들어왔는데, 그림 밑에 출처가 이상해서 답글 달고 갑니다.
    http://blog.naver.com/hozo_chun/130015878178
    여기가 작가분이 직접 운영하는 블로그 같습니다.
    2015.01.26 09:20 신고
  • 프로필사진 amos ㅋㅋㅋㅋㅋㅋㅋ재밌습니다.ㅋㅋㅋ 현실적인고민..ㅋㅋ 그리고 현실적인 결론ㅋㅋㅋㅋ 화이팅입니다!!!!^^
    2015.04.06 11:58 신고
  • 프로필사진 zzzz 대박 재미있네요..
    orm 이 mybatis 랑 비슷한게 없나 찾아보던중 nobatis ㅋㅋㅋㅋ
    제가 비슷한 기능을 만들어야 하나 라고 생각을 하던중.. 이 블로그에 오게됨요
    2015.04.16 14:41 신고
  • 프로필사진 dontsequelize sequlize 쓰지마세요.. join과 관련되면 버그를 항상 찾아 이슈 올리기 바빠질거예요 2017.04.26 19:56 신고
댓글쓰기 폼