Computing 18

[빅데이터 및 지식관리시스템] ER Data Model과 Logical DB Design 공부내용 정리

ER Data ModelER Data model만으로는 데이터를 조작하거나 검색하는 기능이 없다.또한 query언어도 없다. 그러나 시각적으로 구조를 표현하기 쉽기 때문에 논리적 데이터 베이스 스키마 설계에 매우 유용하다.How to design the DatabaseRequirement analysis: 사용자 그룹과 비공식적인 논의를 통해 요구사항을 분석한다.Conceptual Design: ER 다이어그램을 이용하여 Entity(데이터의 주요 객체), Relationship(관계), Constraints(무결성)을 설계한다.Logical Design: PK, FK, Check, Assertion 등을 통해 제약조건을 설계하여 schema로 변환한다.Physical Design: Create Tabl..

Computing 2025.04.15

[C++] Copy Semantics과 Move Semantics에 대해서 알아보기

Copy 또는 Move를 할 때 shallow 하게 하기 때문에 error가 뜰 가능성이 있다.이는 semantic 전체를 copy하지 않고 주소만 복사했기 때문이다. 따라서 deep copy를 하면 shallow copy로 인한 문제를 해결할 수 있으나deep copy만의 문제가 있고 이를 해결하기 위해서는 Move라는 방법을 이용할 수 있다.Copy SemanticsNon-temporary object으로 object를 initialize 하거나 update 할 때 사용하는 것이 copy이다.또는 Non-temporary object를 함수에 통과시킬 때 Copy가 일어난다. Copy constructor와 Copy operation 두가지 방법이 있는데 둘의 차이점과 예제를 알아보겠다.Copy Co..

Computing 2025.04.11

[C++] C++에서 class 배우기

Class클래스는 기존 C의 abstraction과 modularity가 부족한 것을 해결하기 위해 통합된 것으로 C++의 중심적인 기능으로 자리 잡았다.class는 data information과 procedural information으로 구성된다.data information을 attributes, data field라고 하며 Procedural information을 method, function이라 한다. Object는 data attribute와 behavior를 포함하는 개념으로 class에서 구체적으로 실현하는 Runtime instance이다. C에 class와 유사한 structure라는 구조가 있다. structure는 단순히 데이터를 묶는 컨테이너로 함수(method, behavio..

Computing 2025.04.10

[빅데이터 및 지식관리시스템] Business question에 대해 답하기 위한 Analytic Functions 정리

SQL에서 좀 더 복잡한(?) 질문에 대해 출력하기 위해서, 중요한 business question에 대해 답을 하기 위해 Analytic Function을 사용한다. 예를 들어 각 부서 상위 10명의 salesman을 추출하여라.지난 90일간 이동 평균은?전년도 대비 성장률은?과 같은 질문이 있다. SQL로는 이런 것을 하기에는 좀 복잡하고 비효율적이다.따라서 여러 Analytic function을 이용하게 된다. Analytic Functions그에 반해 analytic function을 이용하면 query의 performance를 향상해 주고 효율적이게 작업을 할 수 있다.종류는 다음과 같다.Ranking functions: rank, dense_rank, percent_rank, ntileWind..

Computing 2025.04.08

[C++] Operator Overloading에 대해 알아보기

Operator흔히 아는 +,-,==,>, 각 class에 따라 operator를 redefine 할 수 있고 이것을 operator overloading이라한다.custom type에 맞게 tailor를 할 수 있다. 피연산자, 반환 값을 결정해야 하고 그것에 맞춰 구현하는 function의 형태이다. 사실 convention과 expectation을 맞춰서 function꼴로 만들어야 하는데 사실상 제약은 없다.그래도.. convention에 맞춰서 해주면 좋다고 한다.(rule이니깐)[] Subscript Operator  Purpose: v [i]는 v의 i번째 element에 접근하는 것을 목표로 한다.Syntax: 보다시피 입력으로 int index를 넣어주고 T& reference를 반환해 ..

Computing 2025.04.07

[빅데이터 및 지식관리시스템] SQL에서 모든 것에 대한 만족을 표현하고 싶을때..?

Set vs Bag semanticsRelational Algebra에서는 기본적으로 set sementic을 기본으로 한다.하지만 real-world에서 SQL로 구현할 때, bag sementic을 기본으로 한다. Bag은 set과 비슷하지만, 같은 요소가 여러번 나타날 수 있다.{1,2,3,1}: 1이라는 중복을 허용하는 집합이다.{1,2,3}: 같은 bag이지만 중복이 없는 set이다.또한 element의 순서가 중요한 list와 다르게 bag은 순서가 중요하지 않다. SQL이 bag semantics를 기본으로 하는 이유는 일부 연산에서 더 효율적이기 때문이다.또한 중복된 것을 "distinct" 키워드를 이용하여 제거할 수 있기 때문이다. DivisionDivision은 기본 연산자는 아니지만..

Computing 2025.04.06

[빅데이터 및 지식관리시스템] TPC-C Benchmarking

Benchmarkingperformance를 평가하는 지표이다.DB benchmark 종류OLTP사용자 요청(transaction)이 빈번하게 발생하고, 각 요청이 작고 빠르게 처리되어야하는 시스템이다.짧고 간단한 쿼리로 구성되며 높은 동시성을 가진다.OLAP대용량 데이터를 바탕으로 복잡한 분석 및 리포팅 작업을 수행하는 시스템이다.실시간성보다는 분석 정확성을 중시한다.HTAPOLTP와 OLAP를 동시에 처리하는 시스템이다. TPC-C ScenarioNew-Order, Payment, Order-Status, Delivery, Stock-Level에 대해 작업을 수행하고 benchmark를 평가할 수있다.Data model: WAREHOUSE, DISTRICT, CUSTOMER, ORDERS, ITEM과..

Computing 2025.04.03

[C++] Function Overloading과 Template

Function Overloading함수가 이름을 공유하는 것이다.그 대신 parameters의 type을 다르게 해야 한다.C에서는 data type에 따라 함수의 이름을 설정해야 한다.C++의 경우 동일한 이름만 써도 변수에 type만 정의하면 알아서 인식한다.하지만 return값이 다를 경우에는 이름을 공유할 수 없다. Compiler는 name mangling을 통해 함수 각각을 인식한다. Function Templates함수가 기능은 동일하고 input 받는 type만 다를 경우 template을 만들어서 사용한다.다음과 같이 template keyword를 통해 구현할 수 있다.T부분이 어떤 datatype이 될 수 있다.Template instantiation다음과 같이 다른 type의 pa..

Computing 2025.04.02

[빅데이터 및 지식관리시스템] Nested query와 Aggregate Operations

Nested queryNested query와 join을 이용한 query의 차이Nested query는 in, not in을 통해 존재의 여부를 판단하는 것이기 때문에 중복을 인정하지 않는다.반면, join은 중복을 인정한다.속도 측면에서는 join이 더 빠른데 그 이유는 DBMS 옵티마이저 덕분이다. join에서 column기준으로 묶어서 비교했는데, Nested query에서는 비교하고자 하는 column을 select 하여 in/not in 연산을 실행하면 된다.Correlated subqueryExist는 in과 다르게 tuple 하나하나 비교해가면서 True/False 값을 출력한다.UniqueUique는 중복이 있는지 판단해서 중복된 tuple이 있으면 False, 없으면 True를 출력한다..

Computing 2025.04.01

[C++] Pointers and References part 1

Variable과 Memory어떤 variable이 선언될 때, variable을 위한 공간이 memory에 만들어지고 memory의 주소가 variable의 이름과 associate 된다.변수명을 주소처럼 이용하는 것이다.주소는 "&x"으로 접근할 수 있다.PointersPointer는 똑같은 변수이다...(어렵게 생각 no)평범한 변수인데 단지 memory address가 value인 변수이다. 주로 8byte의 크기를 가진다.(integer:4byte, char:1byte) pointer가 어떤 type의 data를 가지고 있느냐에 따라 pointer를 지정하는 방법이 다른데type정보 *변수명=&x;int *ptr=&x;처럼 쓸 수 있다. pointer 변수 ptr이 가리키는 주소에 담긴 valu..

Computing 2025.03.25