백엔드에 대한 간단 이해

ssummer·2023년 9월 13일
post-thumbnail

DB

SQL

데이터를 테이블에 저장하는 방식. 테이블 사이에 관계성을 부여할 수 있기 때문에 데이터 매핑 해주는 도구로 ORM을 사용한다. 이렇게 관계성을 부여하는 데이터베이스를 관계형 데이터 베이스(RDB-Relational DataBase)라고 한다. 대표적으로 Oracle, MySQL, Postgres 등이 있다.

ORM - Object Relational Mapping
객체를 RDB에 매핑해주는 도구. 자바스크립트의 객체 문법을 사용해 SQL을 조작하는 것을 말한다.
ex) sequalize, typeORM, prisma

NoSQL

'컬렉션'이라고 불리는 서류봉투에 문서를 모아두는 방식을 말한다. 통신을 도와주는 도구는 ODM이며 이런 데이터베이스의 대표적인 예시로는 MongoDBFireBase가 있다.
외국에서는 에스큐엘이 아닌 '시퀄'이라고 발음한다. NoSQLSQL이 아니라고도 볼 수 있지만 'not only'의 약자로 SQL보다 더 많은 기능을 갖고 있는 것으로도 볼 수 있다.

ODM - Object Document Mapping
NoSQL 조작
ex) mongoose


API

graphQL API를 만들어주는 도구 : apollo-server

  • 원래는 apollo-server였는데 버전이 업그레이드 되면서 @apollo/server로 바뀌었다(npm 라이브러리 명)
  • npm 라이브러리 이름에 있는 @는 회사나 조직 명을 말한다.

rest API를 만들어주는 도구 : express

검색 프로세스

특정 키워드들로 데이터를 구분하고 그 데이터들을 역인덱스 방식(Inverted Index)으로 저장해두면 기존에 전체에서 찾는 것보다 빨라진다. Elastic Search가 이런 방식으로 저장하는 것을 도와주는 도구다. Disk에 저장되어 컴퓨터가 꺼지더라도 저장이 유지되고 안전하지만 속도가 비교적 떨어진다. Redis는 비슷하지만 Memory에 저장되어 저장이 유지되지 않고 안전성이 떨어지지만 속도가 빠르다.
서비스가 제공된 후 시간이 지나면 사용자들의 검색에 패턴이 생기기 시작한다. 검색빈도가 높은 데이터들은 검색로그 캐싱을 해 Redis에서, 캐싱되어있지 않다면 Elastic Search 방식을 이용해 보여준다.

  • 역인덱스 방식
    책 맨 뒷부분에 어떤 단어가 어느 페이지에 나왔는지 모아둔 것
  • 토크나이징
    단어(토큰)별로 쪼개는 것

이런 방식은 서비스의 규모가 클 때 사용한다. 데이터의 양이 적은데 이런 방식을 도입한다면 오버엔지니어링이고 유지보수가 힘들어진다.

0개의 댓글