본문 바로가기

개발

(133)
SQL 튜닝 같은 결과의 쿼리는 여러 형태로 작성될 수 있으며 옵티마이저가 실행계획을 생성할 때 최대 성능의 쿼리를 작성해야 한다. 옵티마이저는 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심 엔진이다. 사용자가 구조화된 질의언어로 결과집합을 요구하면 이를 생성하는데 필요한 처리경로는 DBMS에 내장된 옵티마이저가 자동으로 생성해주며 이 처리 경로를 실행계획이라고 부른다. 더 높은 성능의 쿼리를 작성하기 위한 튜닝 가이드라인을 작성한다. 1. WHERE 조건에 인덱스 모두 사용 TEST 테이블에서 TEST_NO, TEST_CONTEXT 컬럼이 TEST_NO_IDX 인덱스로 존재할 때 아래 쿼리는 인덱스를 사용하지 않는다. SELECT * FROM TEST WHERE TEST_..
저장 프로시저(Stored Procedure) 저장 프로시저(Stored Procedure)는 SQL 서버에서 제공되는 프로그래밍 기능이다. 쿼리문의 집합으로 동작을 일괄 처리하는 용도이다. 정의 --Transact-SQL Stored Procedure Syntax CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] [ { @parameter [ type_schema_name. ] data_type } [ VARYING ] [ = default ] [ OUT | OUTPUT ] [READONLY] ] [ ,...n ] [ WITH [ ,...n ] ] [ FOR REPLICATION ] AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] ..
트랜잭션 (Transaction) 트랜잭션(Transaction)은 하나의 논리적 작업 단위로 수행되는 일련의 작업을 말한다. 트랜잭션은 데이터 일치성과 동시발생을 보장하기 위해 사용한다. 트랜잭션 작업 시 영향을 받은 행들은 락처리 되며 다른 사용자는 해당 행을 변경할 수 없다. 트랜잭션 작업 후 커밋시 영향받았던 행들에 대해 락이 해제되며 트랜잭션이 완료 처리된다. 트랜잭션 롤백 시 트랜잭션 생성 이전 시점으로 롤백된다. 롤백 세그먼트(Rollback Segment) 롤백 세그먼트는 수정되기 전의 파일, 블록 ID 등 블럭 정보 및 데이터를 저장한다. MSSQL의 경우 BEGIN TRAN 으로 트랜잭션을 시작하고 트랜잭션 성공시 COMMIT 하거나 ROLLBACK 할 수 있다. 트랜잭션이 성공하면 트랜잭션 동안 이루어진 일련의 작업 ..
데이터베이스 (Database) 정보시스템 데이터를 통해 정보를 얻어내는 시스템을 말한다. 현실세계에서 데이터를 수집하고 데이터를 처리하여 유의미한 정보를 얻어내는 시스템이다. 데이터 : 현실 세계의 단순한 관찰을 통해 수집된 사실 또는 값 정보 : 특정 해석이나 의미를 갖는 데이터 데이터베이스 시스템 데이터를 처리하여 정보를 얻어내는 과정을 도와주는 시스템이다. 데이터베이스의 특징은 다음과 같다. 실시간 접근성 계속적인 변화 동시 공유성 운영 가능 내용 참조 DBMS(Database Management System) 데이터베이스를 다루기 위한 시스템을 의미한다. 데이터를 정의,조작,제어할 수 있으며 관계형 데이터베이스 관리 시스템에서는 SQL 사용이 가능하다. DDL(Data Manipulation Language) : 데이터 정의어..
컴퓨터 아키텍쳐, 소프트웨어 아키텍쳐 컴퓨터 아키텍쳐는 컴퓨터 구조로서 컴퓨터 공학의 개념의 살계이며 컴퓨터 시스템의 근간이 되는 운영 구조이다. 컴퓨터의 설계적으로 이식되는 것들과 요구 사항들(특히 속도와 상호 연결)이 무엇인지 기능적으로 설명되어 있는 청사진이다. 주로 중앙처리장치가 메모리 주소에 내부적으로 수행하고 접근하는 방법이 집중적으로 설명된다. 소프트웨어 아키텍쳐는 소프트웨어 구조로서 소프트웨어의 구성요소들 사이에서 유기적인 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙을 말한다.
CI(Continuous Integration)/CD(Continuous Deploy/Delivery) CI(Continuous Integration)/CD(Continuous Deploy/Delivery) 의 개념에 대해 작성한다. CI(Continuous Integration) CI는 지속적 통합(Continuous Integration)으로 코드를 지속적으로 통합하는 것이다. 전통적인 방식의 개발은 여러명의 개발자가 협업을 진행할때 각자가 중앙저장소에 통합하는 프로세스로 개발을 진행하다. 하지만 컴포넌트, 피쳐의 개발이 완료될 때까지 프로젝트에 참여한 모든 개발자가 중앙저장소에 코드를 통합하지 않았다면 통합과정은 매우 어렵고 힘든 일이 될 것이다. 이런 문제를 해결하고자 지속적 통합(CI)이 등장했다. CI를 자동화 하지 않은 상태에서 수행하면 개발자는 중앙저장소에 코드를 통합하고, 본인의 코드를 중..
소프트웨어 개발 환경 - local, dev, integration, qa, stage, production 일반적으로 사용되는 소프트웨어 개발 환경에 대해 작성한다. 프로젝트 진행에 있어 모든 환경을 갖출 필요는 없으며 프로젝트 환경에 따라서 각 환경을 합치거나 생략해도 된다. 로컬 (Local) 각 개발 PC 에 개발 및 테스트 환경 및 서버를 셋업한 환경을 말한다. 로컬 서버 환경에서의 개발에서 주의할 부분은 모든 개발자가 같은 개발 환경을 사용해야 한다는 것이다. 서로 다른 개발 환경에서 작업한 코드를 머지할 때 로컬 환경에서 잘 작동했던 코드가 작동하지 않는 경우가 많다. 전체 개발 환경을 zip 파일 형태로 묶어서 사용하거나 Docker 등의 컨테이너 기술을 사용한다. 개발 (Dev) 개발자들이 작업한 코드를 머지하여 테스트를 진행할 수 있는 환경이다. 소스코드를 형상관리 시스템에 커밋하면 코드는 개..
컴포넌트(Component) 컴포넌트는 소프트웨어 시스템에서 독립적인 업무 또는 독립적인 기능을 수행하는 모듈로서 이후 시스템을 유지보수 하는데 있어 교체 가능한 부품이다. 소프트웨어 컴포넌트는 하드웨어의 그래픽카드와 같은 개념으로 독립적인 기능을 수행하는 소프트웨어 모듈이라고 말할 수 있으며 소프트웨어 컴포넌트는 컴포넌트란 말로 대체되어 사용되고 있다. 컴포넌트는 정의나 형태가 관점에 따라 다양하게 존재하지만 재사용 부품으로서의 컴포넌트가 되기 위해서는 아래의 내용을 만족해야 한다. 1. 소스코드가 아닌 실행코드 기반으로 재사용할 수 있도록 이미 구현이 완료되어 있어야 한다. 2. 컴포넌트는 용도, 유형, 기술표준과 인터페이스 등에 대한 정보들에 대해서 명세화가 되어 있어야 한다. 3. 교체가능한 컴포넌트를 개발하기 위해서는 표준..

반응형