Computing 18

[빅데이터 및 지식관리시스템] SQL의 기본연산에 대해 알아보기(Join에 대해 모든 공부..)

SQL과 같은 실제 질의 언어가 어떤 수학적 기초 위에 구축되어 있을까?? SQL언어는 Relational Algebra와 Relational Calculus에 근간하여 만들어졌다. Relational Algebra실제 SQL 질의 실행 계획을 표현하는 것으로 operational 하고 procedural 한 성격을 띤다.일련의 연산을 사용해 데이터를 조작한다. Relational Calculus사용자가 query에 대해 how to coplete it을 보는 것보다 what they want를 보는 것이다.따라서, non-operational 하고 declarative 하다. RA와 RC는 전환이 가능하며 표현력이 비슷하다. Relational AlgebraAlgebra는 mathematical sys..

Computing 2025.03.22

[C++] C++ Standard Library Part 3. Container에 대해 자세히 알아보기

Listlist는 sequence container로, 요소들이 메모리상에 연속적으로 배치되지 않고, non-contiguous 메모리 할당 방식을 사용한다.보통 doubly linked list 형태로 구현돼 있어, 각 노드가 이전 노드와 다음 노드를 가리킨다. 주요 특징은효율적인 insertion 및 deletion: list의 중간, 시작, 끝 어디에서나 insertion, deletion연산이 빠르게 가능하다.Random Access가 불가능하다. 원하는 element에 접근하기 위해서는 순차적으로 접근해야 한다.List-initialization항상 헤더를 포함해야 하고 list의 경우는 include 를 포함해야 한다. vector initialization과 비슷하다. list를 선언할 때,..

Computing 2025.03.20

[C++] C++ Standard Library part2. File I/O streams / Strings / Containers

File I/O Streams 헤더 파일의 ifstream(input file stream) class와 ofstream(output file stream) class를 이용하여 File input과 output을 관리한다.File I/O는 standard I/O와 유사한 점이 많다.File I/O Streams-Readingdata.txt를 읽기 위해 ifstream file객체를 지정한다.std::ifstream file("data.txt");file이 정상적으로 열렸나 판단한다.file.is_open()파일을 line단위로 읽기 위해 getline을 사용한다.std::string line;while (std::getline(file, line)) {std::cout string인 line를 지정하고..

Computing 2025.03.19

[빅데이터 및 지식관리시스템] View에 대해 알아보기

ViewView는 virtual table로 view자체가 데이터를 물리적으로 저장하지 않는다.View는 실제 데이터가 들어 있는 Base Relation(기본 테이블) 위에 정의된다. View에 대해 query를 날리면 DBMS가 내부적으로 Base Relation에 접근하여 결과를 생성한다.CREATE VIEW HighScoreStudents(sid, gpa) AS SELECT S.sid, S.gpa FROM Students S WHERE S.gpa >3.5;HighScoreStudents라는 View를 생성한다. 구체적으로 S.gpa > 3.5일 경우에 대해 S.sid, S.gpa column을 보여준다. View에 query를 날리는 과정을 살펴보자.다음과 같이 query를 날렸다 하자.SELEC..

Computing 2025.03.18

[C] Memory model(Stack vs Heap)

Stackaddresse가 낮아지는 방향으로 저장한다.Complie에 의해서 allocate되고 deallocate된다.함수 내에서 사용하는 local variables에 접근할 때 사용한다. 빠른 속도로 처리되며, 메모리 내부에 작은 빈공간이 생기지 않아 효율적이게 사용한다.Heap메모리를 동적으로 할당한다. 실행시간에 메모리의 크기나 필요성이 결정된다.사용자(programmer)에 의해 allocate되고 deallocate된다.Data들은 주로 Pointer를 통해 접근된다.느린 속도로 처리되며, 메모리 내부에 틈이 생길 수있어 비효율적이다.Dynamic Memory Allocation in C#include int *ptr = malloc(sizeof(int));malloc을 사용하기 위해서 헤..

Computing 2025.03.17

[빅데이터 및 지식관리시스템] Relational Data Model/Database 알아보기

What is (Relational) Data Model?Relational database를 위한 이론적인 개념이다.relation, attribute, tuble, key 등으로 구성되어 다음과 같은 특징을 가진다.Structure: DDL(Data definition language)를 사용하여 데이터 베이스 구조를 정의한다.(테이블 생성, 수정, 삭제를 수행하는 SQL언어 같은 거)CREATE TABLE Students(sid: CHAR(20),name: CHAR(20),login: CHAR(10),age: INTEGER, gpa: REAL)Operations: DML(Data Manipulation language)를 사용하여 데이터를 관리한다.(삽입, 수정, 삭제, 조회 등)INSERT INT..

Computing 2025.03.15

[빅데이터 및 지식관리시스템] DBMS와 level of abstraction에 대해 알아보기

DBMS(Database Management System)란?데이터베이스는 매우 크고 통합된 데이터 모음으로 이를 관리하고 저장하는 소프트웨어 패키지이다.real world의 개체 Entity와 그들 간의 관계 Relationship을 모델링하는 것이다.파일시스템과 다른 점은 다음과 같다.Data IndependenceConcurrency Control: 다수의 사용자가 동시에 데이터를 조작할 때, 데이터의 정합성을 유지하게 한다.Crash Recovery: 전원 장애, 디스크 오류등으로 인한 데이터 손실이 발생하는 경우, 복구를 할 수 있도록 한다.Security and access control: 데이터의 기밀성과 무결성을 보장하기 위해 다양한 보안 기능을 제공한다.(인증, 권한관리, 암호화 등)데이..

Computing 2025.03.14

[C++] C++ Standard Library part1. I/O streams

My First C++ Program#include int main(void) {std::cout C++ 소스 코드 파일을 하기 실행 가능한 파일로 변환하기 위해 다음과 같이 적는다.$ g++ helloC++.cpp –o helloC++ -std=c++20이 명령어를 분석해 보면 g++: C++컴파일러를 실행한다.helloC++. cpp -o helloC++: helloC++. cpp 소스코드를 helloC++로 출력파일을 지정한다.-std=c++20: C++20 표준을 사용하여 컴파일한다.#include int main(void){ printf("Hello C!\n"); return 0;}C++소스코드와 동일한 기능을 하는 C코드이다.둘을 비교해 보면header file: stdio.h vs..

Computing 2025.03.12