본문 바로가기

Back-end

(90)
[Database] 트랜잭션이란? 트랜잭션(Transaction) 이란 데이터베이스의 상태를 변화시키는 하나의 논리적인 작업 단위라고 할 수 있으며, 트랜잭션에는 여러 개의 연산이 수행될 수 있습니다. 트랜잭션은 수행중에 한 작업이라도 실패하면 전부 실패하고, 모두 성공해야 성공이라고 할 수 있습니다.
[Database] 데이터베이스에서 인덱스(Index) 를 사용하는 이유 및 장단점 데이터베이스에서 인덱스를 사용하는 이유는 검색 성능을 향상 시키기 위함입니다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 돕고 있습니다. 장점으로 빠른 검색 성능을 들 수 있습니다. 단점으로는 인덱스를 구성하는 비용 즉, 추가, 수정, 삭제 연산 시에 인덱스를 형성하기 위한 추가적인 연산이 수행됩니다. 검색 성능을 실질적으로 향상시키기 위해서는 해당 쿼리가 index를 사용하는지, 카디널리티, Selectivity 같은 요소들이 고려된 인덱스가 생성되어야 합니다. 따라서, 인덱스를 생성할 때에는 트레이드 오프 관계에 놓여있는 요소들을 종합적으로 고려하여 생성해야합니다.
[Database] RDBMS vs NoSQL RDBMS RDBMS(Relational)는 데이터베이스를 이루는 객체들의 릴레이션을 통해서 데이터를 저장하는 데이터베이스입니다. SQL을 사용해 데이터의 저장, 질의, 수정, 삭제를 할 수 있으며 데이터를 효율적으로 보관하는 것을 목적으로 하고 구조화가 굉장히 중요합니다. 장점: 명확한 데이터 구조를 보장하고, 중복을 피할 수 있습니다. 단점: 관계를 맺고 있어 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있으며, 성능 향상을 위해서 서버의 성능을 향상 시켜야하는 Scale-up만을 지원합니다. 스키마로 인해 데이터가 유연하지 못합니다. NoSQL NoSQL(Not Only SQL)은 RDBMS에 비해 자유로운 형태로 데이터를 저장합니다. 데이터 테이블은 그냥 하나의 테이블이며 테이..
[Java] 객체지향이란 객체지향을 정의하면, 의존성 관리입니다. 객체지향으로 의존성을 관리함으로써 변경 영향을 최소화하고 독립적인 배포가 가능해지며 독립적인 개발이 가능해집니다. 따라서, 객체지향에서 가장 중요한 것은 DIP(Dependency Inversion Principle)를 통한 고수준 정책(High Level Policy)과 저수준 구현 세부사항(Low Level Details)의 분리라고 할 수 있습니다.
[Java] 접근 제어자의 종류 접근 제어자를 사용하는 이유는 외부에서 보여주고 싶은 정보들을 선택적으로 제공하기 위함이고, 캡슐화와 통하는 면이 있습니다. private: 해당 클래스 내에서만 접근 가능 default: 해당 패키지 내에서만 접근 가능 protectd: 상속한 클래스 내에서만 접근 가능 public: 전체 영역에서 접근 가능
[Java] 정적(static)이란 무엇인가요? static은 클래스 멤버라고 하며, 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스 별로 관리됩니다. static 키워드를 통해 생성된 정적 멤버들은 PemGen 또는 Metaspace에 저장되며 저장된 메모리는 모든 객체가 공유하며 하나의 멤버를 어디서든지 참조할 수 있는 장점이 있습니다. 그러나, GC(Garbage Collector)의 관리 영역 밖에 존재하기 때문에 프로그램 종료 시까지 메모리가 할당된 채로 존재합니다. 너무 남발하게 되면 시스템 성능에 악영향을 줄 수 있습니다.
[Java] 클래스는 무엇이고 객체는 무엇인가요? 클래스는 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다. 객체는 식별 가능한 개체 또는 사물입니다. 객체의 상태(속성, 특성)을 멤버 변수, 객체의 행동(기능)을 메소드 혹은 멤버 함수라고 표현합니다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가집니다. 인스턴스(클래스가 메모리에 생성된 상태) 들을 통칭하는 용도로 사용합니다.
[Java] 인터페이스와 추상 클래스의 차이점 인터페이스는 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용합니다. 다중 상속이 가능하고, 인터페이스를 구현하는 집합간에는 관계가 없을 수 있습니다. 인터페이스는 다른 클래스를 작성하는데 도움을 주는 목적으로 기본 설계도라고 표현합니다. public static final의 사용 목적은 인터페이스 변수는 아무 인스턴스도 존재하지 않는 시점이기 때문에 스스로 초기화 될 권한이 없습니다. 때문에 public static final을 사용해 구현 객체의 같은 상태를 보장합니다. interface 인터페이스 이름 { public static final 상수이름 = 값; public abstract void 메서드 이름(); } 추상 클래스는 객체의 추상적인 상위 개념으로 공통된 개념을 표현할 때 사용합..