이상현상 이상현상이란 테이블내의 데이터 중복성에 의해서 발생되는 데이터 불일치 현상이다. 삽입 이상(Insertion Anomaly) 특정 데이터가 존재하지 않아 중요한 데이터를 DB에 삽입할 수 없을때 발생 학생이 없어 기본키가 없으므로 삽입 불가 갱신 이상(Update Anomaly) 특정 데이터를 업데이트 했는데, 일부 튜플만 갱신되어 모순 발생 경영학과의 학과장 이름을 변경시 경영학과 학생의 모든 튜플을 수정하지 않으면 데이터 모순 발생 삭제 이상(Deletion Anomaly) 특정 정보를 삭제하면, 원치 않는 정보도 삭제되는 현상 이 모든건 정규화를 통해 해결 가능 함수 종속성이란? 데이터베이스 릴레이션에서 두 개의 속성 집합 간 제약의 일종이다 어떤 릴레이션 R에서, X와 Y를 각각 R의 속..
IP 프로토콜 IP 주소 IP는 네트워크 상에서 컴퓨터(노드)를 식별하기 위해 부여된 위치주소이다. 네트워크 주소는 공통적인 부분이고, 호스트 주소가 중복이 없고 유일한 식별자 역할을 한다. 예를 들면 OO 아파트 101동 101호라는 주소가 있으면 101동까지가 네트워크 주소고, 101호가 호스트 주소가 된다. ※ 네트워크 주소는 각 국가마다 부여한다. == 지역(043-256...) ※ 호스트 주소는 호스트들을 개별적으로 관리하기 위해 사용한다.(국가의 국민) 전화기(5551) IP 주소는 실제로 32자리의 2진수로 이루어져 있다. 192.168.0.103의 2진수 11000000.10101000.00000000.01100111 IP는각 자릿수를 옥텟이라 부르며 dot(.)으로 구분한다. 즉 IP는 ..
랜덤 I/O와 순차 I/O 랜덤 I/O는 논리적/물리적 순서를 따르지 않고 한 건의 데이터를 읽기 위해 한 블록씩 접근하는 방식이다. 순차 I/O는 논리적/물리적 순서를 따라 차례대로 데이터를 읽어 나가는 방식이다. - 5번만 순차 I/O고 나머지는 랜덤 I/O다. - 5번은 논리적/물리적으로 한 방향으로 연속하게 데이터를 읽어 들이지만, 나머지는 연속하지 않은 방향으로 한 블록씩 데이터를 읽는다. 순차 I/O는 3개의 페이지를 디스크에 기록하기 위해 한 번의 시스템 콜을 요청했다. 랜덤 I/O는 3개의 페이지를 디스크에 기록 하기 위해 세 번의 시스템 콜을 요청했다. 즉, 순차 I/O는 디스크의 헤드를 1번 움직였지만, 랜덤 I/O는 디스크의 헤드를 3번 움직이게 된다. 디스크에 데이터를 읽고 쓰는데 ..
신뢰적 데이터 전송의 원리 슬라이딩 윈도우란? 정지-대기 기법의 비효율성을 개선한 기법 수신 측에서 설정한 윈도우 크기만큼 송신 측에서 확인 응답(ACK)없이 전송할 수 있게 하여 흐름을 동적으로 조절하는 제어 알고리즘 이다. 오류 제어와 흐름 제어를 함께 지원한다. 최대 윈도우의 사이즈 만큼 전송할 수 있다. 기본 절차 1. 송신측은 프레임을 순서 번호에 따라 순차적으로 전송한다. 2. 수신측이 송신측에 전송하는 순서 번호는 정상적으로 수신한 번호가 아닌, 다음에 수신하기를 기대하는 번호이다. - ACK4: 4번을 받을 차례이다 라는 뜻 3. 송신측은 전송은 되었지만, ACK를 받지 못한 프레임들을 버퍼에 쌓아둠 4. 수신측은 프로토콜의 동작 방식에 따라 크기가 다름 - 선택적 재전송(Selective..
SQL(Structured Query Language)은 관계형 DB에서 데이터를 정의, 조작, 제어하기 위한 표준 프로그래밍 언어이다. 영어가 주 언어인 사람에서 봤을때 간결하고 명시적인 특성 덕분에 이해와 접근에 쉬운 장점이 있다. C언어와의 차이점 1. 목적 SQL: DB와 상호작용 하기 위해 설계된 프로그래밍 언어 C언어: 범용 프로그래밍 언어로서, 다양한 종류의 SW를 개발하기 위한 도구(운영체제, 임베디드 시스템, 게임 등) 2. 선언적 vs 절차적 SQL: 선언적 언어로, 원하는 결과가 무엇인지 지정하고 컴퓨터가 필요한 단계를 파악한다. C언어: 절차적 언어로, 원하는 결과를 달성하기 위해 개발자가 수행해야 하는 단계가 존재 ❓ 선언적.. 절차적.. 내가 적긴 했지만 이해가 100% 되진 않..
HTTPS HTTPS란? https는 hypertext transfer protocol secure의 약자이며 HTTP의 보안버전 이다. 데이터 전송의 보안을 강화하기 위해 암호화를 한다. 은행 계좌, 로그인 및 개인 정보 등 중요한 데이터를 전송할 때 특히 중요하다. HTTPS 사용 목적 HTTPS는 HTTP에서 '보안' 요소만 추가된 프로토콜이다. HTTPS의 주요 목적은 데이터의 무결성과 개인정보를 보호하는 것이다. 웹 브라우저와 웹 서버 간의 전송되는 모든 데이터가 암호화되어 가로채거나 변조되지 않는다. 추가적인 목적으로는 아래가 있다. - 사용성: 크롬에서는 SSL 인증서가 없는 사이트를 방문시 Not secure 라는 경고창을 표시해준다. - 사이트 체류시간 증가 : 체류시간에 증가할수록 se..
파일시스템이란 컴퓨터에서 저장장치 안에 저장되는 파일들을 관리하는 시스템이다. 폴더와 파일의 계층 구조로 되어있어 폴더를 만들고 폴더안에 파일을 만들어서 사용한다. 파일 시스템은 간단한 데이터 저장 및 검색 작업에 적합하다. 데이터베이스는 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 집합이다. 특징은 아래와 같다. 1. 실시간 접근성 - 사용자의 질의에 대하여 즉각적인 처리와 응답이 이루어진다. 2. 지속적인 변화 - 생성, 수정, 삭제를 통하여 항상 최신의 데이터를 유지 3. 동시 공유 - 사용자들이 원하는 데이터를 동시에 공유 가능 4. 내용에 대한 참조 - 사용자가 원하는 데이터를 주소가 아닌 내용에 따라 참조 가능 5. 데이터 논리적 독립성 - 응용프로그램과 데이터베이스는 독립..
컴퓨터 네트워크와 네트워크 레이어 라우터와 스위치란? 스위치란 같은 네트워크 안에서 통신장비들을 서로 연결해주어 자원을 쉽게 공유할 수 있도록 해주는 장치이다. L2(데이터 링크 계층)에 속하며, MAC 주소를 기반으로 통신한다. 라우터란 다른 네트워크 사이에서 목적지로 가는 적합한 경로를 찾아주는 라우팅 기능을 제공하는 장치이다. L3(네트워크 계층)에 속하며, IP 주소를 기반으로 통신한다. 네트워크 네트워크(Network)란 Net과 Work의 합성어이다. 의미를 해석하자면 '그물처럼 서로 엮여서 일하는 것'으로 볼 수 있다. 컴퓨터, 휴대폰 등 통신장비를 접목시키면, 각종 통신 장비들이 서로 연결되어 데이터를 교환하거나 리소스를 공유 하는 통신망이다. 네트워크 통신 규약이 표준화되지 않았던 시절에..
API를 통해 Mysql DB에서 데이터를 등록 및 수정 작업을 마친 후, 카프카를 통해 최신화된 데이터를 다른 서버에 전송하는 로직이 있다. @Service @RequiredArgsConstructor public class Service { private final KafkaService kafkaService; private final Reader reader; private final Writer writer; @Transactional public void add(Request request) { // 데이터 저장 Entity entity = writer.save(request); // 카프카로 데이터 전송 kafkaService.send(savedEntity); } @Transactional ..
한 프로젝트에서 2개 이상의 DB를 연결해서 사용하기 위한 다중 DataSource 설정을 아래와 같이 했다. @Configuration @EnableTransactionManagement(proxyTargetClass = true) @EnableJpaRepositories( entityManagerFactoryRef = "aJpaEntityManagerFactory", basePackages = {"com.soap.repository"} ) public class ADbConfig { @Bean(name = "aDataSource") @ConfigurationProperties(prefix = "spring.a.datasource") public DataSource aDataSource() { retu..