MyBatis VS. JPA
·
💻
SQL Mapper개발자가 작성한 SQL 실행 결과를 객체에 매핑시켜주는 프레임워크MyBatisORM(Object Relational Mapping)객체와 DB의 데이터를 자동으로 매핑시켜주는 프레임워크JPA데이터를 관계형 데이터베이스에 저장(= 영속화, persistence)DB를 사용할 때 번거로운 반복작업 없애줌MyBatis: SQL 문 → Java와 분리 ⇒ 별도 파일로 관리 → SQL 개발, 유지 보수 용이JPA: SQL 문 만들 필요 X ⇒ 자동화, 반복작업 줄여줌 복잡한 쿼리와 SQL 제어 필요 → MyBatis간단한 매핑 및 객체 지향적인 접근 필요 → JPAMyBatis반복적인 JDBC 프로그래밍 단순화 → 불필요한 Boilerplate 코드 제거Java 소스코드에서 SQL문 분리 → 별..
[NodeJS] Express / Passport / Middleware / Sequelize
·
💻/Node.js
express$ npm i express $ npm i -D nodemonnodemonpassport$ npm i passport passport-local passport-kakao bcrypt// app.jsconst passport = require('passport'); const passportConfig = require('./passport'); const app = express();passportConfig(); app.set('port', process.env.PORT || 3001);app.use(session({ resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly:..
[Real MySQL 8.0 1] 07 데이터 암호화
·
📓/데이터베이스
1. MySQL 서버의 데이터 암호화5.7 버전부터: 데이터 암호화 기능 지원, 처음에는 데이터 파일(테이블스페이스)에 대해서만 암호화 기능 제공8.0 버전부터: 데이터 파일, 리두 로그, 언두 로그, 복제를 위한 바이너리 로그 등 모두 암호화 기능 제공 데이터베이스 서버와 디스크 사이의 데이터를 읽고 쓰는 지점에서 암호화/복호화-> 디스크 입출력 이외의 부분에서는 압호화 처리 필요 X= MySQL 서버(InnoDB 스토리지 엔진)의 I/O 레이어에서만 데이터 암호화/복호화 과정 실행사용자의 쿼리를 처리하는 과정에서 테이블의 데이터가 암호화돼 있는지 여부 식별할 필요 X암호화 O 테이블, 암호화 X 테이블 => 동일한 처리 과정: 데이터 암호화 기능이 활성화 O -> MySQL 내부와 사용자 입장에서 차..
[Real MySQL 8.0 1] 06 데이터 압축
·
📓/데이터베이스
1. 페이지 압축(Transparent Page Compression)MySQL 서버가 디스크에 저장하는 시점에 데이터 페이지 압축돼 저장/ MySQL 서버가 디스크에서 데이터 페이지를 읽어올 때 압축 해제버퍼 풀에 데이터 페이지 한 번 적재 -> InnoDB 스토러지 엔진: 압축이 해제된 상태로만 데이터 페이지 관리서버의 내부 코드에서는 압축 여부 관계 X 투명(Tranparent)하게 작동(-) 16KB 데이터 페이지를 압축한 결과가 용량이 얼마나 될지 예측 불가능적어도 하나의 테이블은 동일한 크기의 페이지(블록)으로 통일돼야 함 운영체제별로 특정 버전의 파일 시스템에서만 지원되는 펀치 홀(Punch hole)이라는 기능 사용운영체계(파일 시스템)의 블록 사이즈: 512바이트 -> 페이지 압축이 작동..
[Real MySQL 8.0 1] 05 트랜잭션과 잠금
·
📓/데이터베이스
1. 트랜잭션트랜잭션작업의 완전성 보장논리적인 작업 셋 모두 완벽하게 처리 OR 처리 못할 경우에는 원 상태로 복구=> 작업의 일부만 적용되는 현상(Partial update)이 발생하지 않게 만들어주는 기능 잠금(Lock): 동시성을 제어하기 위한 기능트랜잭션: 데이터의 정합성을 보장하기 위한 기능ex. 하나의 회원 정보 레코드 -> 여러 커넥션에서 동시에 변경하려고 함잠금 X -> 하나의 데이터를 여러 커넥션에서 동시에 변경할 수 있게 됨=> 해당 레코드 값은 예측할 수 없는 상태 됨 잠금: 여러 커넥션에서 동시에 동일한 자원(레코드/테이블) 요청 -> 순서대로 한 시점에는 하나의 커넥션만 변경할 수 있게 해주는 역할격리 수준: 하나의 트랜잭션 내에서 or 여러 트랜잭션 간의 작업 내용을 어떻게 공유..
[Real MySQL 8.0 1] 04 아키텍처 - 3. MyISAM 스토리지 엔진 아키텍처 / 4. MySQL 로그 파일
·
📓/데이터베이스
3. MyISAM 스토리지 엔진 아키텍처키 캐시, 운영체제의 캐시/버퍼 -> MyISAM 스토리지 엔진의 성능에 영향1) 키 캐시(Key cache, 키 버퍼)InnoDB의 버퍼 풀과 비슷한 역할인덱스만을 대상으로 작동, 인덱스의 디스크 쓰기의 작업에 대해서만 부분적으로 버퍼링 역할키 캐시 히트율(Hit rate) = 100 - (Key_reads / Key_read_requests * 100)Key_reads: 인덱스를 디스크에서 읽어 들인 횟수를 저장하는 상태 변수Key_read_requests: 키 캐시로부터 인덱스를 읽은 횟수를 저장하는 상태 변수상태값 -> `SHOW GLOBAL STATUS LIKE 'Key%';`일반적으로 99% 이상으로 유지하는 것 권장99% 미만 -> 키 캐시 조금 더 크..
kimmeoww
'분류 전체보기' 카테고리의 글 목록 (13 Page)