티스토리 뷰
학부 시절에도 그렇고, 혼자서 DB SQL쿼리문을 공부했던 시절도 그렇고
배움의 시작은 언제나 "Select * from"이었던 것 같다.
그런데 이 판도가 2010년부터 바뀌기 시작한 것 같다.
NoSQL이라는 용어가 처음 나왔을 때는 SQL은 안 돼! 우린 새로운 걸 추구할 거야! 하는 느낌을 받았지만,
그게 아니라 Not only SQL이라는 것을 알고서는 여전히 SQL이 중요하다는 것을 역설하고 있구나 하는 느낌 또한 받았다.
당시에는 RDBMS(Relational DataBase Management System:관계형 데이터베이스) 종류의 DB밖에는 접할 기회가 없어서 데이터베이스의 전부는 관계형 데이터베이스만이 다인 줄 알고 살았던 시절이 있었다.
하지만 MongoDB를 접하게 되면서 DB라는 것이 좀 더 다양한 형태로 존재한다는 것을 깨닫게 되는 시기가 왔었다.
처음에는 관계형 데이터베이스처럼 관계나 타입을 정하지 않고서 어떻게 데이터를 저장할 수 있을까? 하는 의문이 들었다.
그런데, 이제는 ORM이라는 것이 등장하게 되었다.
이름도 사실 어렵다. 외우기도 어렵다.
Object Relational Mapping의 줄임말인데, 외우기가 쉽지 않았다.
DBMS에 접근하기 전에 앞 단에서 제어하므로 DBMS를 뭘 쓰든지 관계없이 해당 ORM이 제공하는 문법, 쉽게 말하면 또 다른 SQL과 같은 문법만을 잘 구술할 줄 알면 된다는 것이다.
ORM이란?
Object Relational Mapping. 한글로는 객체-관계 매핑.
객체를 관계형 데이터베이스와 연결해주는 개념이라고 생각하면 된다.
객체지향에서는 클래스라는 개념이 있지만, 관계형 데이터베이스에는 테이블이라는 개념이 있다.
프로그래밍 쪽에서는 웬만해서는 객체지향 패러다임으로 만드는 경우가 허다해서, 관계형 데이터베이스를 이용하면서도 객체에 대한 표현에 제약을 받지 않고 객체처럼 사용하고자 DMBS 앞 단에서 기능하는 새로운 개념이라고 생각하면 되겠다.
Prisma가 뭐예요?
Prisma는 대표적인 ORM의 서비스이다.
클라이언트 앞 단에 GraphQl이라는 것이 있고, GraphQL은 Prisma서비스를 거쳐서 DBMS에 접근한다.
여기서 GraphQL에 대해서는 나중에 서술하도록 하겠다.
다만, 여기서 쉽게 생각하기 위해서는 웹서버 혹은 서버 단 정도로 생각하면 된다.
Prisma에서는 자사의 서비스를 다음과 같이 소개한다.
Prisma is a database abstraction layer that turns your databases into GraphQL APIs with CRUD operations and realtime capabilities. It is the glue between your database and GraphQL server.
GraphQL is a simple yet incredibly powerful abstraction for working with data. Prisma is the first step towards making GraphQL a universal query language by abstracting away the complexity of SQL and other database APIs.
[발번역]
Prisma는 CRUD작업과 실시간 작업 능력을 수행하는 DB 추상화 레이어이다.
Prisma는 DB와 GraphQL 사이를 이어주는 접착제이다.
GraphQl은 간단하지만 데이터 관련 작업을 하기에 믿을 수 없도록 강력한 추상화이다.
Prisma는 SQL의 복잡함과 데이터베이스의 API를 추상화함으로써 GraphQL의 범용 쿼리 언어로 만드는 첫 단계이다.
Prisma가 지원하는 DB는 다음과 같다.
MySQL, 몽고DB , PostgreSQL, Amazon RDS.
개인적으로 생각하는 ORM의 장점
1. 테이블 설계와 관계 설정, DB의 자료 입출력 과정에 관한 걱정이 거의 사라진다.
(물론 데이터 모델이라는 객체 설계는 필요함)
2. 추상화하여 표현하는 SQL과 같은 또 다른 질의어는 무엇을 요구하는지가 명확하게 한 눈에 보인다.
(어떤 자료를 가져올 것인가가 눈에 확 들어온다)
3. 특정 DB에 구애받지 않는다.
개인적으로 생각하는 ORM의 한계점
1. SQL을 배우듯 각 플랫폼별 ORM의 추상화된 질의어를 새롭게 배워야 한다.
다만 Prisma의 경우 GraphQL과 친화돼 있고 Javascript언어 기반의 Json을 바탕으로 하므로
Docs를 살펴보면서 응용하여 작성하기가 매우 편리하다는 생각이 들지만, 그럼에도 불구하고 배우는 데 시행착오가 없지는 않다. 이러한 시간비용 또한 무시하지는 못할 듯하다.
2. 플랫폼의 안정성
개인이 포트폴리오용 정도로는 새로운 도전이랍시고 괜찮다고 생각한다.
하지만 기업에 도입하려고 한다면 고민 정도는 심각하게 해보아야 하지 않을까?
언제까지 서비스할지도 모르는 것이고, 만약에 도입했는데 서비스가 종료된다면 머지 않아 직원인 개발자들에게도 여파가 작지는 않을 것으로 사료된다. IT 환경 속에서 플랫폼들이 시간이 지나면서 도태되는 경우가 많은데, 제발 그러지 않는 플랫폼들이길 바라면서.. 노심초사 하지는 않을까 걱정!
'컴퓨터 공부방 > 신기술 동향' 카테고리의 다른 글
스타트업 인턴 개발자 3달간의 고군분투기 (0) | 2020.02.01 |
---|
- Total
- Today
- Yesterday
- 알고리즘
- 미로찾기
- 국비지원교육
- 영문법
- html5
- 보고서
- 해커스매거진
- 대학생
- 20대
- 멱집합
- 국가기간전략직종훈련
- 시간복잡도
- 반응형레이아웃
- BLOB
- 부분집합
- 퀵정렬
- N-Queens
- 보고서양식
- 정렬
- 데이터베이스
- java
- 청년구직활동지원금
- 웹개발자
- 개발자
- 재귀함수
- ORM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |