책(200)
-
[Ch1] 몽고DB 소개
몽고DB 프로젝트의 주 관심사는 높은 확장성, 유연하고 빠르면서도 완전한 기능을 갖춘 데이터 스토리지를 만드는 일이다. 기본 개념들은 Ch2에서 후술 하겠지만, 간단하게 소개하고자 하니 가볍게 읽고 넘어가 보자. 1. 손쉬운 사용 몽고 DB는 도큐먼트 지향 DB이다(document oriented db) 관계형을 사용하지 않는 주된 이유는 분산 확장(scale-out)에 으으나 그 외 이점도 있다. 최신 객체 지향 개발에 적합 row 개념 대신 도큐먼트와 배열을 허용함으로써 복잡한 계층 관계를 하나의 레코드로 표현 가능 빠른 개발 속도 - 고정된 스키마가 없으므로 필요할 때마다 쉽게 필드를 추가/제거할 수 있다 - 이 덕분에 모델 실험도 쉽다 2. 확장 가능한 설계 요새는 데이터셋의 크기도 많아지고(이제..
2022.07.10 -
[8장] mongoDB/ODM
1. ODM; Object Document Mapping 시퀄라이즈같은 ORM과 유사하게, OOP의 객체와 NoSQL의 도큐먼트를 자동으로 매핑하는 기술을 말한다. 그리고 몽고db를 위한 ODM으로 몽구스(mongoose)가 있다. 사실 몽고디비 자체가 자바스크립트를 기반으로 하기 때문에 몽구스를 반드시 써야 하는 것은 아니다. 다만 몽구스가 몇몇 보완점들이 있기에 쓰는 것뿐으로 몽구스 없다고 몽고디비를 못쓸 이유 따윈 없다. 스키마(schema) 생성 기능 몽고디비는 어떤 자료형이든 자유롭게 데이터를 넣을 수 있다. 하지만 그게 문제가 될 가능성도 있는데, 몽구스는 스키마를 생성해 제약 조건을 달아줘서 노드 서버 단에서 데이터를 필터링할 수 있게 된다. JOIN 기능 몽고디비에선 MySQL처럼 JOIN..
2022.05.22 -
[8장] mongoDB
1. SQL vs NoSQL(Not only SQL) 2. DB 및 컬렉션 생성 2.1 데이터베이스 생성 # use [데이터베이스명] > use nodejs switched to db nodejs // 데이터베이스 목록 확인 > show dbs admin 0.000GB config 0.000GB local 0.000GB // 현재 사용중인 DB 확인 > db nodejs 2.2 컬렉션 생성 사실 컬렉션은 따로 생성안해도 도큐먼트를 넣는 순간 자동생성 되기는 한다. 뭐 어쨌든... # db.createCollection( [컬렉션 이름] ) > db.createCollection('users') { "ok" : 1 } > db.createCollection('comments') { "ok" : 1 } > ..
2022.05.22 -
[7장] MySQL/ORM 관계설정
이전 글에서 모델간 관계를 설정해주는 일이 매우 중요하다고 설명했다. 예를 들어, 인스타에 가서 '존잘남'을 검색했다고 치자. 애플리케이션은 '존잘남' 이란 유저 한명을 표현하기 위해 아래와 같은 데이터들을 불러올 것이다. (더 있을 수도 있겠다만) '존잘남' 유저 1명이 쓴 여러개의 게시글 '존잘남' 유저를 팔로잉하는 여러명의 유저들 '존잘남' 유저가 팔로우하는 여러명의 유저들 '존잘남' 유저가 쓴 여러개의 게시글 각 게시글에 달린 여러개의 해시태그 그럼 이제 모델간의 관계가 어떻게 지정되는지 알아보자 1. 1:N 관계 눈으로 보면 쉽게 이해가 되는데 이 관계를 코드로 딱 정립해주려면 뭐가 필요할까? 생각나는대로 적어보자. 테이블에서 누가 코멘트를 썼는지는 commenter에 적혀있다 commenter..
2022.05.22 -
[7장] MySQL/ORM
1. ORM이란? (Object Relational Mapping, 객체-관계 매핑) OOP(Object Oriented Programming)에서 쓰이는 객체와 RDB(Relational DataBase)에서 쓰이는 테이블을 자동으로 매핑(연결)하는 것을 뜻한다. 애초에 둘은 서로 호환될 것을 염두에 두고 만든 것이 아니기 때문에, ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 간접적으로 데이터베이스를 조작하는 것이다. npm i sequelize sequelize-cli mysql2 패키지를 설치하고 본격적으로 시작해보자. ※ sequelize-cli 패키지를 설치하다보면 ○○○○-cli 라는 모듈도 설치할 때가 있다. 이러한 애들은 명령줄 인터페이스(CLI; Command L..
2022.05.08 -
[7장] MySQL
지금까진 모든 데이터를 변수에, 즉 컴퓨터 메모리에 저장해왔다. 이 말은 서버 종료시 메모리가 정리되면서 저장했던 데이터도 날아간다는 뜻이다. 이를 방지하기 위해선 데이터베이스를 사용해야 한다. 물론 이 책이 데이터베이스를 깊게 다루는 책은 아니므로 '적당히' 필요한 정도로만 알아보자. 1. 데이터베이스(DB) 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음. 이러한 데이터 베이스를 관리하는 시스템을 DBMS; DataBase Management System 라고 부른다. 보통 서버의 하드디스크나 SSD 등의 저장 매체에 데이터를 저장한다. DBMS 중에서 RDBMS라 부르는 관계형 DBMS가 많이 사용되는데, 대표적인 예로 Oracle, MySQL, MSSQL등이 있다. ..
2022.05.07