이 영역을 누르면 첫 페이지로 이동
나눔코딩 블로그의 첫 페이지로 이동

나눔코딩

페이지 맨 위로 올라가기

나눔코딩

∞. 기술 면접/4. 데이터베이스

  • 나눔코딩
14. 기술면접 - 데이터베이스 - JDBC (Java DataBase Connectivity)

14. 기술면접 - 데이터베이스 - JDBC (Java DataBase Connectivity)

2021.10.18
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 JDBC 란 JDBC (Java Database Connectivity)는 DB에 접근할 수 있도록 Java 에서 제공하는 API 이다. - JDBC 는 관계형 데이터베이스에 사용되는 SQL 문을 실행하기 위해 자바로 작성된 클래스와 인터페이스로 구성되어 있다 - 특정 데이터베이스나 특정 데이터베이스 매커니즘에 구애 받지 않는 독립적인 인터페이스를 통해 다양한 데이터베이스에 접근하는 코드를 구현(mysql, oracle, mssql 등 추상화를 통해 접근가능)할 수 있도록 제공하는 자바 클래스의 표준 집합이다 - JDBC 클래스는 자바 패키지 java.sql 과 javax.sql 에 포함되어 있다 데..
13. 기술면접 - 데이터베이스 - ORM (Object Relation Mapping)

13. 기술면접 - 데이터베이스 - ORM (Object Relation Mapping)

2021.10.18
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 ORM 이란 - 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결) 해주는 것을 말한다 영속성 (Persistance) - 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성 - 영속성을 갖지 않는 데이터는 단지 메모리에서만 존재하기 때문에 프로그램을 종료하면 모두 잃어버리게 된다 - 때문에 파일 시스템, 관계형 데이터베이스 혹은 객체 데이터베이스 등을 활용하여 데이터를 영구하게 저장하여 영속성 을 부여한다 영속성 레이어 (Persistence Layer) - 프로그램의 아키텍처에서, 데이터에 영속성을 부여해주는 계층 - JDBC 를 이용하여 직접 구현할 수 있지만 Pe..
12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)

12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)

2021.10.18
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 배경 - 서비스의 크기가 점점 커지고 DB에 저장하는 데이터의 규모 또한 대용량화 되면서, 기존에 사용하는 DB 시스템의 용량(storage)의 한계와 성능(performence)의 저하를 가져오게 되었다 - 즉, VLDB(Very Large DBMS) 와 같이 하나의 DBMS 에 너무 큰 table 이 들어가면서 용량과 성능 측면에서 많은 이슈가 발생하게 되었고, 이런 이슈를 해결하기 위한 방법으로 Table 을 `파티션(partition)` 이라는 작은 단위로 나누어 관리하는 `파티셔닝(partitioning) 기법`이 나타나게 되었다 파티셔닝의 개념 - 큰 테이블이나 index를 관리하기 쉬운 ..
11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)

11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)

2021.10.18
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 리플리케이션 (Replication) - DB를 이중화, DB 복제 라고 보면 된다 - 정의 리플리케이션(Replication)은 복제를 뜻하며 2대 이상의 DBMS를 나눠서 데이터를 저장하는 방식이며, 사용하기 위한 최소 구성은 Master / Slave 구성을 하여야 됩니다. -> 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식 사용 목적 MySQL 리플리케션(Replication)은 사용목적은 크게 실시간 Data 백업과 여러대의 DB서버의 부하를 분산 시킬수 있습니다 간단 요약 아주 단순한 Database를 구성할때에는 아래의 그림처럼 하나의 서버와 하나의..
10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer)

10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer)

2021.10.18
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 옵티마이저 (Optimizer) - 옵티마이저란? - SQL 개발자가 SQL을 작성하여 실행할 때, 옵티마이저는 SQL을 어떻게 실행할 것 인지를 계획하게 된다 - SQL 실행 계획 (Execution Plan)을 수리합하고 SQL 을 실행한다 - 옵티마이저는 SQL의 실행 계획을 수립하고 SQL 을 실행하는 데이터베이스 관리 시스템의 소프트웨어이다 - 동일한 결과가 나오는 SQL 도 어떻게 실행하느냐에 따라서 성능이 달라지기에, SQL 성능에 옵티마이저는 아주 중요한 역할을 한다 옵티마이저 특징 - 옵티마이저는 데이터 딕셔너리(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 ..
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장

09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장

2021.10.17
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 1. Select 시 에는 꼭 필요한 컬럼만 불러와야 한다 SELECT * FROM member; SELECT id FROM member; - 많은 필드 값을 불러올수록 DB는 더 많은 로드를 부담하게 되기 때문 - 컬럼 중에 불필요한 값을 가진 필드가 있다면 과감히 제외하고, 꼭 필요한 열만 불러오는 것이 좋다 2. 조건 부여 시, 가급적이면 기존 DB값에 별도의 연산을 걸지 않는 것이 좋다 -- 나쁜 SELECT m.id, ANY_VALUE(m.title) title, COUNT(r.id) r_count FROM movie m INNER JOIN rating r ON m.id = r.movie_i..
07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement

07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement

2021.10.17
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 Statement 와 PreparedStatement SQL 을 실행할 수 있는 객체입니다 Statement 1. 단일로 사용될 때 빠른 속도를 지닙니다. 2. 쿼리에 인자를 부여할 수 없습니다. 3. 매번 컴파일을 수행해야 합니다. PreparedStatement 1. 쿼리에 인자를 부여할 수 있습니다. 2. 처음 프리컴파일 된 후, 이후에는 컴파일을 수행하지 않습니다. 3. 여러번 수행될 때 빠른 속도를 지닙니다. (동일한 쿼리문을 조금씩 바꿔서 여러번 실행해야 할 때 좋다) 과정 1. 준비(Prepare) : 먼저 애플리케이션은 문의(Query) 틀을 만들고 이를 DBMS 로 보낸다. 특정값은 ..
06. 기술면접 - 데이터베이스 - 인덱스 (Index)

06. 기술면접 - 데이터베이스 - 인덱스 (Index)

2021.10.17
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 인덱스 (Index) - 인덱스(index)의 원래 뜻은 색인. 데이터베이스에서 조회 및 검색을 더 빠르게 할 수 있는 방법/기술, 혹은 이에 쓰이는 자료구조 자체를 의미하기도 한다 메모리에서 인덱스를 생성하여 파일형태로 저장해놓는다 인덱스를 활용하면 데이터를 조회하는 SELECT 외에도 UPDATE 나 DELETE 의 성능이 함께 향상된다 그러한 이유는 해당 연산을 수행하려면 해당 대상을 조회해야만 작업을 할 수 있기 때문이다 인덱스 관리 DBMS는 index 를 항상 최신의 정렬된 상태로 유지해야 원하는 값을 빠르게 탐색할 수 있다 그렇기 때문에 인덱스가 적용된 컬럼에 INSERT, UPDATE,..
Spring Mybatis SQL Injection

Spring Mybatis SQL Injection

2021.10.16
MyBatis 바인딩 기법 MyBatis 에서는 #{} 바인딩과 ${} 바인딩이 있다 #{} 바인딩은 바인딩 값을 "" 로 감싸주어 바인딩을 해준다 [GET] http://localhost:8080/members?name=root@gmail.com [SQL] select * from email = "root@gmail.com" ${} 바인딩은 "" 없이 바로 바인딩을 해준다 [GET] http://localhost:8080/members?name=root@gmail.com [SQL] select * from email = root@gmail.com 위와 같이하면 "" 로 감싸지않아 쿼리문이 날라가게 되어 오류가 발생한다 따라서 ${} 이용해서 요청하려면 아래와 같이 해야 한다 [GET] http://lo..
05. 기술 면접 - 데이터베이스 - SQL 인젝션

05. 기술 면접 - 데이터베이스 - SQL 인젝션

2021.10.15
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 SQL Injection 과 종류 SQL 인젝션이란, 데이터베이스에 전송되는 SQL 쿼리문을 조작하여 데이트를 변조하거나, 허가 되지 않은 정보에 접근하는 공격이다. 주로 개인정보를 빼낼 때 많이 사용되는 기법이다 Error based SQL Injection 논리적 에러를 이용한 SQL Injection password 부분을 주석처리하여 패스워드를 다르게 입력하더라도 해당 계정정보를 조회할 수 있게 된다 Union based SQL Injection Union 명령어를 이용한 SQL Injection SQL 에서 Union 키워드는 두 개의 쿼리문에 대한 결과를 통합해서 하나의 테이블로 보여주게 ..
04. 기술 면접 - 데이터베이스 - 조인 (Join)

04. 기술 면접 - 데이터베이스 - 조인 (Join)

2021.10.15
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 조인 (Join) - 조인이란 - 한 데이터베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것 - 회원(Member) 테이블과 게시글(Board) 테이블이 있을 때 어떤 회원이 작성한 게시글을 가지고 오기 위해 두 테이블을 조합하여 가져와야 할 때 사용된다 - 조인의 필요성 - 관계형 데이터베이스의 구조적 특징으로 정규화를 수행하면 의미 있는 데이터의 집합으로 테이블이 구성되고, 각 테이블끼리는 관계(Relationship) 를 갖게 된다 - 이와 같은 특징으로 관계형 데이터베이스는 저장 공간이 효율성이 향상되게 된다. - 다른 한편으로는 서로 관계있는 데이터가 여러 테이블로 나뉘어 ..
03. 기술 면접 - 데이터베이스 - 트랜잭션 (Transaction)

03. 기술 면접 - 데이터베이스 - 트랜잭션 (Transaction)

2021.10.12
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다 트랜잭션이란? - 데이터베이스의 상태를 변환시키는 하나의 논리적인 작업 단위를 구성하는 연산들의 집합이다 - 예를 들어, A계좌에서 B계좌로 일정 금액을 이체한다고 가정하자. 1. A계좌의 잔액을 확인한다 2. A계좌의 금액에서 이체할 금액을 빼고 다시 저장한다 3. B계좌의 잔액을 확인한다 4. B계좌의 금액에서 이체할 금액을 더하고 다시 저장한다 - 이러한 과정들이 모두 합쳐져 계좌이체라는 하나의 작업단위를 구성한다. - 하나의 트랜잭션은 commit 되거나, rollback 된다 - commit 연산 - 한 개의 논리적인 단위(트랜잭션)에 대한 작업이 성공적으로 끝나 데이터베이스가 다시 일관된 ..
  • 최신
    • 1
    • 2
  • 다음

정보

나눔코딩 블로그의 첫 페이지로 이동

나눔코딩

  • 나눔코딩의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (316)
    • ∞. 읽은 거리 (3)
    • ∞. 기술 면접 (61)
      • 1. 자료구조 (0)
      • 2. 네트워크 (9)
      • 3. 운영체제 (11)
      • 4. 데이터베이스 (13)
      • 5. 디자인 패턴 (0)
      • 6. 알고리즘 (0)
      • 7. 자바 (15)
      • 8. 자바스크립트 (7)
      • 9. 스프링 (5)
      • 10. 시큐리티 (1)
      • 11. 기타 (0)
      • 12. Vue (0)
    • ∞. 웹개발 유용한 사이트 (14)
    • ∞. 트러블 슈팅 + TIL (7)
    • 00. 출발 (9)
    • 01. 엑셀 (9)
      • 기초 (4)
      • 컴활 1급 (4)
      • VBA (0)
    • 02. 엑세스 (9)
      • 기초 (5)
      • 컴활 1급 (4)
    • 04. Oracle (1)
      • 기초 (1)
    • 03. JAVA (8)
      • 기초 (7)
      • 객체지향 프로그래밍 (0)
    • 05. HTML (13)
      • 기초 (1)
      • css (10)
      • sass (0)
      • less (0)
    • 06. Javascript (16)
      • 기초 (13)
      • ES6 모듈 (2)
      • Canvas (0)
    • 07. JSP (0)
      • 기초 (0)
    • 08. jQuery (0)
      • 기초 (0)
    • 09. BootStrap (1)
      • 기초 (0)
      • v4 - Layout (1)
    • 10. Spring (30)
      • 기초 (3)
      • 실험 (4)
      • MVC (1)
      • BOOT (6)
      • Security (10)
      • Lib (Library) (2)
      • 벤치마킹 (0)
      • JUnit5 (2)
      • DevTools (0)
      • Socket (1)
      • Batch (0)
      • Mobile (0)
      • WebFlux (0)
      • Cloud (0)
      • Thymleaf (0)
      • Actuator (0)
      • 성능 테스트 (1)
    • 11. JetBrains (34)
      • 기초 (1)
      • IntelliJ IDEA (33)
      • WebStorm (0)
      • Pycham (0)
    • 12. API (0)
      • 기초 (0)
      • 네이버 API (0)
      • 카카오 API (0)
      • 구글 API (0)
      • 인스타그램 API (0)
    • 13. AutoHotkey (1)
    • 14. Python (8)
      • 기초 (3)
      • Selenium (2)
      • Beautiful Soup (0)
      • openpyxl (1)
      • Pyqt5 (0)
      • Deep learning (open CV) (0)
      • Geocoder (0)
      • Anaconda (0)
      • DeepLearning (0)
      • Jupyter Nootbook (0)
    • 14.5. R (0)
    • 15. JMeter (0)
      • 다운로드 (0)
    • 16. Vue JS (23)
      • 기초 (3)
      • Vue 2 (15)
      • Vue 3 (5)
      • Vuetify 2.5.8 (0)
    • 17. Git (12)
      • 기초 (8)
      • ItelliJ IDEA (4)
      • SourceTree (0)
    • 18. AWS (5)
      • 기초 (2)
      • Jira (3)
    • 19. Naver Cloud Platform (0)
    • 20. Google Cloud Platform (0)
      • 기초 (0)
      • stt & tts (0)
    • 21. Kotlin (0)
    • 22. Android (0)
      • 기초 (0)
      • Java (0)
      • Kotlin (0)
      • Flutter FrameWork (0)
    • 23. Clean Code [JAVA] (1)
    • 24. BuildTool (1)
      • Maven (1)
      • Gradle (0)
    • 25. 자료 구조와 알고리즘 (18)
      • JAVA (1)
      • Java Script (1)
      • 프로그래머스 (0)
      • 백준 알고리즘 (0)
      • 나의 알고리즘 (14)
      • Brilliant 공부 (0)
    • 26. React (1)
      • 기초 (0)
      • 강의 정리 (1)
    • 27. PostMan (0)
      • 기초 (0)
    • 28. 프로그래머스 (9)
    • 29. Leet Code (0)
    • 30. MySQL (3)
      • 기초 (2)
      • 문제 (1)
    • 73. GraphQL (0)
    • 74. Nuxt JS (0)
    • 75. Electron (0)
    • 76. UX & UI Design Tool (0)
      • 기초 (0)
      • Axure (0)
      • Sketch (0)
      • Figma (0)
    • 77. MarkDown (1)
      • 기초 (1)
    • 78. Tomcat (1)
      • 메모 (1)
    • 79. Element JS (0)
    • 80. Parallax JS (0)
      • 기초 (0)
    • 81. Player JS (0)
      • 기초 (0)
    • 82. Smart Maker (0)
    • 83. Vim (0)
      • 기초 (0)
    • 84. Linux (0)
      • 기초 (0)
      • Centos 7 (0)
      • Ubuntu (0)
    • 85. Node JS (2)
      • 기초 (1)
      • WebRTC (0)
      • NVM (1)
    • 86. Propeller JS (0)
    • 87. FullPage JS (0)
      • 기초 (0)
    • 88. 아두이노 (0)
    • 89. Tensorflow (0)
    • 90. 웹 패킷 분석 (0)
    • 91. 크롬 개발자도구 (0)
    • 92. 디자인 패턴 (7)
      • 생성(Creational) (3)
      • 구조(Structral) (1)
      • 행위(Behavioral) (2)
      • SOLID 패턴 (0)
    • 95. Linux Shell Script (0)
    • 96. 구글 애널리스틱 (0)
    • 97. ffmpeg (0)
    • 98. ShareX (1)
    • 자료실 (0)
    • 기타 (2)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 졵
  • 엑셀 표시형식
  • 깁
  • 엑셀 기본작업
  • 엑셀 분석작업
  • 엑셀 가운데맞춤
  • 엑셀 글씨
  • 엑셀 기타작업

나의 외부 링크

  • 비전공자 개발자
  • 자바 디자인 패턴
  • 자바 디자인 패턴
  • 스프링 블로그
  • 해킹보안 & 웹 관련
  • ERD 생성
  • 전문 기술 블로그
  • Servlet에 대한 개념없이 스프링을 했네요?
  • 스프링 FitlerChainList
  • 알고리즘 파워 블로그

정보

THE HEYDAZE의 나눔코딩

나눔코딩

THE HEYDAZE

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © THE HEYDAZE. Designed by Fraccino.

티스토리툴바