CS 18

Neo4j DBMS 구조와 포트별 역할

Neo4j DBMS 구조Neo4j 는 DBMS 로 데이터베이스를 포함하여 그 주변 관리, 보안, 쿼리 처리, 클라이언트 통신, API 서비스 등을 총괄하는 시스템입니다. http://localhost:7474 에 접속 시 보이는 Neo4j Browser 또한 Neo4j DBMS 에서 제공하는 웹 기반 클라이언트 애플리케이션입니다. Neo4j DBMS 는 운영체제에 설치되어 포트를 통해 기능을 분리 제공하게 됩니다.포트는 DBMS 가 외부 요청을 수신하는 입구 역할일 뿐, 그 자체에 프로그램을 설치하는 개념은 아닙니다.Neo4j 포트별 역할Bolt port: 7687Neo4j DBMS 가 제공하는 핵심 기능인 쿼리 처리를 위한 쿼리 처리용 포트HTTP port: 7474Neo4j Browser 웹 애플리케..

CS/DB 2025.04.10

데이터베이스 간단 정리

Database vs DBMS (Database Management System)데이터베이스 (Database): 데이터를 구조적으로 저장한 정보의 집합으로, DBMS 가 관리하고 운영하는 대상DBMS (Database Management System): 데이터베이스에 저장된 데이터를 효율적으로 관리하고 조작할 수 있도록 돕는 소프트웨어 시스템으로, 데이터베이스의 생성, 수정, 검색 등을 처리DBMS 가 서버처럼 동작하는 이유와 네트워크 접속DBMS 는 서버-클라이언트 모델에 기반하여 동작하는 네트워크 서비스이기 때문에 로컬에 설치하더라도 여전히 네트워크 프로토콜을 사용하여 연결이 이루어지므로 IP 주소와 포트를 입력해야 접속할 수 있습니다.SQLite 와 같은 임베디드 DBMS 는 별도의 서버 없이 로..

CS/DB 2025.01.07

Labeled Property Graph (LPG)

Labeled Property Graph (LPG)Labeled Property Graph (LPG) 는 그래프 데이터베이스에서 사용되는 데이터 모델의 한 종류로 노드 (Node), 관계 (Relationship), 레이블 (Label), 속성 (Property) 을 활용하여 데이터를 구조화합니다. LPG 는 관계형 데이터베이스보다 직관적으로 데이터 간의 관계를 표현할 수 있어 네트워크, 소셜 미디어, 지식 그래프, 추천 시스템 등 다양한 응용 분야에서 사용됩니다.Relationship 은 그래프 이론에서의 Edge (간선) 와 같은 것을 지칭합니다. 그래프 이론에서의 Edge 는 관계의 물리적 연결선을 의미하지만 LPG 에서는 의미적 관계를 더욱 강조하기 위해 Relationship 이라는 표현을 선호..

CS/DB 2025.01.07

프로세스 (Process) vs 쓰레드 (Thread)

프로세스 vs 쓰레드프로세스 (Process) :실행 중인 프로그램의 인스턴스각 프로세스는 서로 독립된 메모리 공간을 사용프로세스 간 통신은 일반적으로 IPC 를 통해 이루어짐프로세스 생성과 종료가 상대적으로 비쌈문맥 전환 시 오버헤드가 큼한 프로세스가 비정상적으로 종료되더라도 다른 프로세스에 영향을 주지 않음쓰레드 (Thread) :프로세스 내에서 실행되는 더 작은 단위Code, Data, BSS, Heap 영역을 공유하며 Stack 영역은 독립적쓰레드 간 통신은 같은 프로세스 내에서 메모리 공유로 통신쓰레드 생성과 종료가 상대적으로 저렴문맥 전환 시 오버헤드가 작음동기화 문제와 경합 상태를 관리해야 함컨텍스트 스위칭 (Context Switching)컨텍스트 스위칭은 CPU 가 한 작업 (프로세스 또..

CS/OS 2024.10.10

컴파일 타임 (Compile Time) vs 런타임 (Runtime)

컴파일 타임 vs 런타임컴파일 타임 (Compile Time) :프로그램이 실제로 실행되기 전에 코드가 컴파일되는 시점문법 검사, 타입 체크, 오류 탐지, 고정된 메모리 할당이 이루어짐예: 전역 변수의 메모리 공간이 예약됨, 구문 오류 발견런타임 (Runtime) :프로그램이 실제로 실행되고 있는 시점동적 메모리 할당, 함수 호출, 사용자 입력 처리 등이 이루어짐예: 함수 실행 중 변수에 값이 할당됨, 동적 메모리 사용컴파일 타임 오류 vs 런타임 오류컴파일 타임 오류 (Compile Time Error) :프로그램을 컴파일하는 과정에서 발생하는 오류. 주로 문법 오류나 타입 불일치예: int a = "hello"; 와 같이 타입이 맞지 않는 경우런타임 오류 (Runtime Error) :프로그램이 실행..

CS/Compilers 2024.10.06

컴파일러 (Compiler) vs 인터프리터 (Interpreter)

컴파일러 언어:소스 코드를 한 번에 읽어 들여 기계어로 변환 후 해당 실행 파일을 독립적으로 실행파일 실행 시 기계어로 변환된 실행 파일을 사용하므로 실행 속도가 빠름소스 코드가 컴파일되어 있으므로 배포 시 소스 코드 포함 불필요소스 코드 변경 시 다시 컴파일 과정이 필요하며, 이 과정에서 시간 소요대표 언어: C, C++, Go, Rust인터프리터 언어:기계어로 변환하는 과정 없이 인터프리터를 통해 소스 코드를 한 줄씩 읽어가며 즉시 실행파일 실행 시 매번 코드 해석이 이루어지므로 실행 속도가 느림소스 코드가 그대로 노출되어 배포 시 소스 코드 보호가 어려움소스 코드 변경이 발생해도 컴파일 과정이 없어 빠르게 결과를 확인할 수 있으며 디버깅 시간 단축대표 언어: Python, JavaScript, Ruby

CS/Compilers 2024.10.06

메모리 (Memory)

메모리 (Memory)운영체제 (OS) 에서 메모리는 다음과 같이 분류할 수 있습니다.주기억장치 (Main Memory)RAM (Random Access Memory)ROM (Read-Only Memory)보조기억장치 (Secondary Memory)HDD (Hard Disk Drive)SSD (Solid State Drive)지금부터 설명하는 메모리는 RAM 을 지칭합니다.프로세스의 메모리 구조 (Memory Layout of a Process)메모리는 프로그램이 실행될 때 프로그램의 명령어와 데이터가 로드 (load) 되는 공간으로, CPU 가 직접 접근하여 해당 명령어와 데이터를 읽고 연산을 수행합니다. 다음은 프로세스가 메모리에 올라갔을 때의 메모리 할당 구조입니다.Text Segment실행할 프..

CS/OS 2024.10.05

표준 스트림 stdin, stdout, stderr

데이터 스트림 (Data Stream)데이터 스트림은 데이터가 연속적으로 흐르는 통로를 의미합니다. 프로그램이나 프로세스가 데이터를 읽거나 쓸 때, 데이터 스트림을 통해 데이터를 주고받습니다.표준 스트림 (Standard Streams)표준 스트림은 데이터 스트림 중에서 프로세스가 입출력 및 오류 처리를 위해 사용하는 기본 스트림입니다. 표준 스트림은 다음과 같이 세 가지로 구분됩니다.표준 입력 (Standard Input, stdin) :입력 데이터를 처리하는 스트림보통 파일 디스크립터 0번을 참조리다이렉션 (표준 출력 (Standard Output, stdout) :정상적인 출력을 처리하는 스트림보통 파일 디스크립터 1번을 참조리다이렉션 (>) 을 통해 표준 출력의 연결 대상 변경 가능표준 오류 (S..

CS/OS 2024.09.30

권한 시스템과 chmod

권한 시스템Unix 기반 운영체제에서 권한 시스템은 파일과 디렉터리에 대한 접근을 제어하는 메커니즘입니다. 세 가지 사용자 그룹에 대해 세 가지 권한 유형을 설정하여 누가 어떤 자원에 접근할 수 있는지를 관리하는 중요한 보안 요소입니다. 이는 다중 사용자 환경에서 파일을 안전하게 보호하고, 사용자 간의 불필요한 접근을 방지합니다.사용자 그룹:소유자 (Owner) : 파일을 소유한 사용자.그룹 (Group) : 파일이 속한 그룹.기타 사용자 (Others) : 위 두 그룹 외의 모든 사용자.권한 유형:읽기 (read) :파일의 내용을 읽을 수 있는 권한.디렉터리의 경우 목록을 볼 수 있는 권한.쓰기 (write) : 파일을 수정할 수 있는 권한.디렉터리의 경우 디렉터리 내 파일을 생성 또는 삭제할 수 있는..

CS/Linux 2024.09.27