728x90
반응형

현문hyun답 8

[현문hyun답] MongoDB 에서 별도의 컬렉션으로 분리하는 것과 문서 내부에 저장하는 것 비교

서론MongoDB의 장점이자 단점이 될 수 있는 것은 문서 내부에 통으로 저장하는 방식으로 join으로 인한 성능 저하를 줄일 수 있다는 점이다. 이는 다시 말해 처음 설계에서 어떻게 할지 정하는 것이 더욱 중요하다는 얘기가 될 수도 있다. 데이터 무결성과 중복 사이에서 적절한 줄타기가 필요한 특징이다.그럼에도 불구하고, 별도의 컬렉션으로 분리하여 다른 컬렉션의 id를 참조해야하는 경우가 발생하기 마련이기 때문에, 두 방법을 비교해보는 글을 쓰게 되었다. 본론별도의 컬렉션으로 분리사용자주 추가되고, 자주 변경되는 데이터A와 B 데이터가 독립적으로 관리되어야 하는 경우다양한 필터링이나 분석이 필요한 경우장점데이터 중복을 줄일 수 있어 저장 공간을 효율적으로 사용별도의 문서로 관리되기 때문에 필요할 때만 쿼..

현문hyun답 2024.11.18

[현문hyun답] 언제 어떤 데이터베이스와 ORM/ODM을 사용하는게 좋을까? (2) - ORM/ODM

본론 - 2Mongoose개요MongoDB 전용 ODM장점MongoDB의 모든 기능을 활용할 수 있음스키마를 쉽게 정의하고 유효성 검사를 설정할 수 있음쿼리 전후에 미들웨어를 추가하여 로직을 쉽게 확장할 수 있음단점비동기 처리 방식이 TypeORM이나 Prisma에 비해 덜 직관적임쿼리 작성 시 코드가 복잡해 질 수 있음    Prisma개요Typescript ORM다양한 데이터베이스 지원타입 안정성을 제공하고 데이터베이스 스키마를 선언적으로 정의할 수 있음장점Typescript와 호환이 잘 되어 컴파일 시점에 오류를 잡을 수 있음체이닝을 통한 간결한 쿼리 작성 가능데이터베이스 스키마에 따라 자동으로 타입 생성단점MongoDB의 모든 기능을 지원하지 않음마이그레이션 충돌이나 관리가 복잡함생성된 쿼리가 최..

현문hyun답 2024.11.15

[현문hyun답] 언제 어떤 데이터베이스와 ORM/ODM을 사용하는게 좋을까? (1) - 데이터베이스

서론프로젝트를 하다보면 이 데이터베이스보다는 다른 게 더 적합할 것 같다 혹은 이 ORM은 내가 하는 작업에서는 불편한 점이 있다같은 생각이 들 때가 있다. 데이터베이스 별 특성은 알고 있어도 실제 프로젝트에 어떤 식으로 적용될 지와 적용되었을 때 실제로 어떨 지를 예시를 들어 같이 정리해보면 선택할 때 도움이 될 것이라 작성하게 되었다. 본론 - 1RDBMS (MySQL, MariaDB, PostgreSQL)개요데이터를 테이블 형식으로 구조화하여 저장하는 데이터베이스 시스템행과 열로 구성되는 테이블데이터 간의 관계를 정의주요 특징스키마 기반ACID 속성: 원자성, 일관성, 고립성, 지속성을 보장하여 데이터의 무결성 유지관계: 테이블 간의 관계를 설정할 수 있으며, 외래 키를 통해 데이터의 무결성 유지장..

현문hyun답 2024.11.14

[현문hyun답] go의 goroutine(고루틴), kotlin의 coroutine(코루틴), typescript의 generator(생성기), roblox lua의 corotuine(코루틴) 비교

0. 서론Go 언어나 Kotiln 언어는 웹, 앱 또는 서버 등을 제작할 때 사용하게 되었는데, 기존에 주로 사용하던 Java나 Javascript에서는 쉽게 접하지 못했던 고루틴과 코루틴을 접하게 되었다.Typescript의 생성기는 zepeto(제페토) 게임을 만들면서 접하게 되었는데 zepeto unity에서 typescript로 코드를 작성하면서 게임 내에 필요한 비동기적 작업을 generator로 쓰게 되었다.Roblox Lua의 코루틴은 Roblox 게임을 만들면서 접하게 되었고 상당히 자주 사용하게 되었다.여러 언어를 사용하면서 이름은 다르지만 비슷한 기능을 사용하고 있다는 점에서 흥미가 생겨 비교를 해보게 되었다. 1. Go의 gorotuine(go 루틴, 고루틴)Go 언어에서 경량 스레..

현문hyun답 2024.08.13

[현문hyun답] Web Server와 WAS의 차이

Static Web Page와 Dynamic Web Page Static Web Page - 저장된 그대로 사용자에게 전달되는 웹페이지 - 서버에 저장된 데이터가 변경되지 않는 한 모든 상황에서 모든 사용자에게 동일한 정보 표시 Dynamic Web Page - 동적인 contents를 반환 - 서버에 의해서 실행되는 프로그램을 통해 만들어진 결과물을 보여줌 Static Website Dynamic Website 페이지가 로드될 때 이전에 만들어진 content는 항상 동일함 content가 빠르게 만들어지고 정기적으로 변함 웹사이트를 구축할 때 주로 HTML 코드를 사용함 PHP, SERVLET, JSP, ASP.NET과 같은 server-side-language로 웹사이트를 구축함 모든 request..

현문hyun답 2022.11.10

[현문hyun답] ORM이란? JPA, Sequelize 등을 쓰는 이유는?

서론 스프링부트로 개발 할 때는 처음 배울 때 JPA로 배웠기 때문에 자연스럽게 JPA를 적용했다. 그런데 Node.js로 개인 프로젝트를 진행하다보니 데이터베이스 구축과 관리가 아니라 개발을 하면서 쿼리문을 쓰는게 낯설게 느껴졌고 새삼스럽게 ORM의 존재를 인식하게 되었다. Node.js에도 역시 Sequelize라는 ORM이 있었고 이번 기회를 통해 ORM에 대해 정리해보는 시간을 갖기로 했다. ORM ORM(Object Relational Mapping)은 객체 지향 프로그래밍에서 객체로 관계형 데이터베이스를 관리하는 기술이다. 스프링의 JPA가, 노드js의 Sequelize가 대표적인 예이다. ORM을 사용하는 이유? 기존 개발 방식은 SQL로 데이터베이스를 관리하는 것이었다. 이런 방식의 개발은..

현문hyun답 2022.08.18

[현문hyun답] MySQL vs MariaDB, 어떤 것을 쓸까?

서론 데이터베이스에는 RDBMS와 NoSQL이 있다. RDBMS의 대표적인 예로는 MySQL이 있고, NoSQL의 대표적인 예로는 MongoDB가 있다. 그런데 나는 처음 데이터베이스를 다룰 때 mariaDB를 사용했다. MySQL과 유사하다는 것만 알고 있었기에 MySQL과 MariaDB의 차이에 대한 질문에 어떤 답변을 해야할 지 정리해보았다. MySQL 1990년대 중반에 개발. 시장에서 사용할 수 있는 오픈 DB. SQL 언어를 사용. 단순 쿼리 처리 성능이 압도적으로 우수하고 오랜 시간 동안 사용되어온만큼 성능이 꾸준이 개선되었고 신뢰성이 높음. 오픈 소스이며, 다중 사용자와 다중 스레드를 지원하고 있어 C/C++, Java 등 여러 프로그래밍 언어를 위한 다양한 API를 제공. 윈도우, 리눅스..

현문hyun답 2022.08.10

[현문hyun답] Apache, Nginx, Tomcat 이란 뭐고 차이점은 뭘까?

서론 웹서버를 구축하면서 Apache와 Nginx, 그리고 Tomcat 중에 선택해야 했다. 스프링 부트를 배우면서 Tomcat이 내장되어 있다는 건 알았지만 Tomcat이 뭔지는 몰랐고, 참여하고 있는 프로젝트에서는 Apache와 Tomcat을 사용하다가 Nginx와 Tomcat으로 바꿨다고 한다. 이 프로젝트에서는 내가 서버를 관리한 게 아니었고, 애초에 웹서버에 대한 지식이 없었기 때문에 그냥 넘어갔는데 이번에 웹서버를 구축하면서 이 세 가지의 차이점을 알아보게 되었다. 가장 궁금했던 건, 세 가지 전부 웹서버라고 하면서 왜 두 가지를 같이 쓰는지였다. Web Server(웹서버) 먼저 웹서버에 대해 먼저 알아보자. 위키백과에서는 다음과 같이 설명하고 있다. 웹 서버(web server)는 다음의 ..

현문hyun답 2022.07.27
728x90
반응형