목차
📌 ORM은 객체지향 프로그래밍의 객체(Object)와 관계형 데이터베이스(Relational Database)의 데이터를 연결(Mapping)하는 기술을 의미한다.
📌 ORM 프레임워크는 ORM을 구현하기 위한 구조와 구현을 위해 필요한 여러 기능들을 제공하는 소프트웨어를 의미한다.
JAVA | JPA, Hibernate, EclipseLink, DataNucleus, Ebean 등 |
C++ | ODB, QxOrm 등 |
Python | Django, SQLAlchemy, Storm 등 |
iOS | DatabaseObject, Core Data 등 |
.NET | NHibernate, DatabaseObjects, Dapper 등 |
PHP | Doctrine, Propel, RedBean 등 |
💡 JPA(Java Persistent API) : 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 뜻한다.
💡 Hibernate : JPA를 구현한 구현체이다. 대중적으로 많이 이용되는 JPA 구현체 중 하나이다.
💡 EclipseLink, DataNucleus : JPA를 구현한 구현체
💡 Ebean : Java와 Kotlin을 위한 ORM 라이브러리
💡 Django : Python의 오픈 소스 웹 프레임워크이자 풀 스택 프레임워크이다.
💡 SQLAlchemy : Python에서 사용 가능한 ORM
📌 쿼리 성능 최적화는 데이터 입/출력 애플리케이션의 성능 향상을 위해 SQL 코드를 최적화하는 것이다.
RBO | CBO | |
최적화 기준 | 규칙에 정의된 우선순위 | 액세스 비용 |
성능 기준 | 개발자의 SQL 숙련도 | 옵티마이저의 예측 성능 |
특징 | 실행 계획 예측이 쉬움 | 성능 통계치 정보 활용, 예측이 복잡합 |
고려사항 | 개발자의 규칙 이해도, 규칙의 효율성 | 비용 산출 공식의 정확성 |
💡 APM(Application Performance Management/Monitoring) : APM은 애플리케이션의 성능 관리를 위해 접속자 자원 현황, 트랜잭션 수행 내역, 장애 진단 등 다양한 모니터링 기능을 제공하는 도구이다. APM은 리소스 방식과 엔드투엔드(End-To-End)방식이 있으며 종류는 다음과 같다.
💡 리소스 방식 : Nagios, Zabbix, Cacti 등
💡 엔드투엔드 방식 : VisualVM, 제니퍼, 스카우터 등
💡 옵티마이저(Optimizer)
- 옵티마이저는 작성된 SQL이 가장 효율적으로 수행되도록 최적의 경로를 찾아 주는 모듈로 RBO와 CBO 두 종류가 있다. 실무에서는 주로 CBO가 사용된다.
- CBO 옵티마이저는 입/출력 속도, CPU 사용량, 쿼리의 블록 개수, 쿼리에 사용되는 개체의 속성, 튜플의 개수 등을 종합하여 각 DBMS마다 고유의 알고리즘에 따라 산출되는 '비용'을 계산한다. 그러므로 개체나 DBMS의 버전이 변경되어 알고리즘에 변화가 생기면 실행 계획을 다시 확인해야 한다.
📌 실행 계획은 DBMS의 옵티마이저가 수립한 SQL 코드의 실행 절차와 방법을 의미한다.
📌 쿼리 성능 최적화는 실행 계획에 표시된 연산 순서, 조인 방식, 테이블 조회 방법 등을 참고하여 SQL문이 더 빠르고 효율적으로 작동하도록 SQL 코드와 인덱스를 재구성하는 것을 의미한다.
💡 EXSTS : 서브 쿼리의 모든 데이터를 확인하는 IN과 달리 데이터의 존재 여부가 확인되면 검색이 종료되므로 보다 처리 속도가 빠르다.
💡 힌트 : SQL문에 추가되어 테이블 접근 순서를 변경하거나, 인덱사 사용을 강제하는 등의 실행 계획에 영향을 줄 수 있는 문장을 의미한다.
💡 IOT(Index-Organized Table) : 일반적으로 인덱스가 있는 테이블을 조회할 때, 인텍스를 검색하여 주소를 얻으면 주소를 다시 찾아 가는 과정을 거친다. 반면 IOT는 인덱스 안에 테이블 데이터를 직접 삽입하여 저장함으로써 주소를 얻는 과정이 생략되어 더욱 빠른 조회가 가능하다.
📌 [정보처리기사] 서버 프로그램 구현 - 보안 및 API/배치 프로그램/패키지 소프트웨어 (1) | 2024.02.26 |
---|---|
📌 [정보처리기사] 서버프로그램 구현 - 개발환경 구축/서버 개발 (1) | 2024.02.26 |
📌 [정보처리기사] SQL 활용 - SQL 테스트 (0) | 2024.02.22 |
📌 SQL 활용 - 사용자 정의 함수/DBMS 접속 기술 (0) | 2024.02.22 |
📌 [정보처리기사] SQL 활용 - 프로시저(Procedure)/트리거(Trigger) (0) | 2024.02.21 |