목록DBMS (34)
코딩항해기
N+1 문제N+1 문제는 ORM을 사용할 때 발생하는 대표적인 성능 문제다. 하나의 쿼리로 N개의 데이터를 가져온 후, 연관된 데이터를 가져오기 위해 N번의 추가 쿼리가 발생하는 현상을 말한다. 예시게시글과 댓글의 관계를 예로 들면, 한 게시글에는 여러 개의 댓글이 달릴 수 있는 일대다 관계일 때,더보기@Entitypublic class Post { @Id @GeneratedValue private Long id; private String title; @OneToMany(mappedBy = "post", fetch = FetchType.LAZY) private List comments;}@Entitypublic class Comment { @Id ..
ACID데이터베이스에서 ACID는 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 나타내는 약어다. 각각 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)를 의미한다. 이 네 가지 특성은 데이터베이스의 무결성을 보장하는 핵심 요소이다. Atomicity (원자성)원자성은 트랜잭션의 작업이 모두 성공하거나 모두 실패해야 함을 의미한다. 예시는 계좌 이체 상황이다.try { // 트랜잭션 시작 connection.setAutoCommit(false); // A계좌에서 돈을 출금 String debitQuery = "UPDATE accounts SET balance = balance - ? WHERE ac..
데이터 로딩 전략의 기본 개념데이터베이스 프로그래밍에서 Lazy Loading과 Eager Loading은 데이터를 불러오는 두 가지 주요 전략이다. 각각의 전략은 고유한 특징과 사용 사례를 가지고 있으며, 애플리케이션의 성능과 사용자 경험에 큰 영향을 미친다. Lazy Loading Lazy Loading은 데이터가 실제로 필요한 시점에 로드하는 방식이다. 처음에는 기본 데이터만 로드하고, 관련 데이터는 실제로 요청이 있을 때 추가로 로드한다. 이는 마치 책의 목차를 먼저 보고, 관심 있는 페이지를 필요할 때 펼쳐보는 것과 같다. 초기 로딩 시간을 단축할 수 있다는 장점이 있지만, 여러 번의 데이터베이스 호출이 발생할 수 있다는 단점도 존재한다. // Lazy Loading 예시const user =..
ORM Object-Relational MappingORM은 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간의 데이터를 변환하는 프로그래밍 기술이다. 객체와 관계형 데이터베이스의 데이터를 매핑하는 것을 의미한다. ORM을 사용하면 SQL 쿼리 없이 데이터를 데이터베이스에 편하게 저장하고 관리할 수 있다. 데이터베이스 설계와 비즈니스 로직사이의 간극을 줄여주는 중요한 역할을 수행한다. ORM의 사용은 코드의 가독성을 높이고, 유지 보수를 용이하게 하며, 데이터베이스와의 결합도를 낮줘 개발 과정을 더욱 효율적으로 만들어 준다. ORM은 다양한 프로그래밍 언어와 프레임워크에서 지원된다. Java의 Hibernate, Python의 SQLAlchemy, Ruby의 ActiveRecord 등..
PostgreSQLPostgreSQL은 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템(ORDBMS)의 하나이다. BSD 허가권으로 배포되며 오픈소스 개발자 및 관련 회사들이 개발에 참여하고 있다. 데이터베이스 서버로서 주요 기능은 데이터를 안전하게 저장하고 다른 응용 소프트웨어로부터의 요청에 응답할 때 데이터를 반환하는 것이다. 소규모의 단일 머신 애플리케이션에서부터 수많은 동시 접속 사용자가 있는 대형의 인터넷 애플리케이션(또는 데이터 웨어하우스용)에 이르기까지 여러 부하를 관리할 수 있으며 macOS 서버의 경우 PostgreSQL은 기본 데이터베이스이다. 객체 관계 데이터베이스 ORDBMS객체지향 데이터베이스 모델을 가진 관계형 데이터베이스 관리 시스템을 의미한다. 소프..
MongoDB오픈소스 비관계형 데이터베이스 관리시스템으로, 테이블과 행 대신 유연한 문서를 활용해 다양한 데이터 형식을 처리하고 저장한다. RDBMS를 필요로 하지 않으므로, 사용자가 다변량 데이터 유형을 손쉽게 저장하고 쿼리할 수 있는 탄력적인 데이터 저장 모델을 사용할 수 있다. 이 점은 개발자의 데이터베이스 관리를 간소화하고 확장성을 갖춘 크로스 플랫폼 및 서비스 환경을 구축한다. MongoDB는 문서 또는 문서 컬렉션이 기본 단위로, 이진 JSON형식으로 지정되어 다양한 데이터를 저장하고 분산처리할 수 있다. 동적 스키마 설계를 활용하기 때문에 유연성을 확보해 데이터 레코드를 생성하고 집계를 통해 문서 컬렉션을 쿼리하며, 대량의 정보를 분석한다. MongoDB는 C++로 작성된 오픈소스 문서지향(..
CSV (Comma Separated Values)표 형태의 데이터를 저장하는 파일 형식이다. 각 줄은 하나의 행에 해당하고 각 열 사이에는 쉼표(Comma)를 넣어 구분하며 이 때 모든 행은 같은 개수의 열을 가져야한다. 줄 바꿈 문자는 라인피드 또는 캐리지 리턴를 사용한다. 예시는 이미지와 같은 표를 CSV로 변환한 형태이다.이름,생년,월,일,국어 점수,영어 점수,수학 점수홍길동,1992년,7월,17일,100점,90점,70점희동이,1992년,4월,3일,90점,100점,100점 이 CSV를 통해 데이터 이관 작업을 진행하자. 1. 데이터를 이관할 테이블을 선택한 뒤 데이터 내보내기를 한다. 2. CSV 형식을 선택한다. * 진행 중 이 부분을 수정해 저장할 폴더를 선택할 수 있다. (기본 C:\Us..
※정리된 내용보다 더 많은 차이가 있다. 0. 대소문자 구분Oracle에서는 대소문자를 구분하지 않지만 MySQL에서는 대소문자를 구분한다. 1. 시퀀스 사용 함수Oracleboard_sq.NEXTVALMySQLboard_sq.CURRVAL 그 외에도 MySQL에서는 시퀀스를 사용하지 않고 컬럼 제약조건으로 AUTO_INCREMENT를 사용하고 insert할 때 해당 컬럼을 제외하고하면 시퀀스와 같은 효과를 낸다. (Oracle은 없음) 2. 형변환 Oracle에서는 TO_CHAR, TO_NUMBER 등을 사용한 반면 MySQL에서는 CAST라는 예약어를 활용하여 형변환한다.OracleSELECT TO_CHAR(100) FROM DUALMySQLSELECT CAST(100 AS CHAR) FROM DUA..
1. 설치할 때 입력한 비밀번호를 입력한다. 2. 명령어를 입력한다.CREATE DATABASE [계정이름] DEFAULT CHARACTER SET UTF8; 3. 생성됐는지 확인한다.SHOW DATABASES; 4. 생성한 계정으로 로그인한다.USE [로그인할계정명];
1. 8.0 버전 두 번째 다운로드(용량 큰 버전)을 다운로드한다. MySQL :: Download MySQL Installer (Archived Versions)Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Installer, please visit MySQL Downloads. MySQL open source software is provided under the GPL License.downloads.mysql.com 2. 다운로드 받은 msi 파일을 실행한다. 3. Costom 선택 후 Next를 클..