목차 Join Join은 간단히 말하면 필요에 의한 두 개 이상의 테이블 간 결합이다. 여기서 필요란 당연하다면 당연하게도 사용자의 필요, 따라서 개발자의 필요를 가리킨다. 따라서 Join은 필요와 목표에 의한 새로운 테이블을 (임시로) 생성하며, 데이터를 손쉽게 조회할 수 있도록 도와준다. 계속해서 테이블의 결합방식에 따른 Join의 종류를 알아보자. Inner Join Inner Join은 교집합에 해당한다. 두 테이블의 공통된 요소만 가져와 테이블을 구성하기 때문이다. 우선 다이어그램을 보면 아래와 같이 생겼다. 계속해서 간단한 두 개의 테이블로 예를 들어보자. 각 테이블에서 서로 연관된 내용만 뽑아 테이블을 생성한 것을 확인할 수 있다. 계속에서 SQL 표현식을 살펴보면, 아래와 같은 두 가지 방..
프로젝트에서 통계 자료를 만드는 김에 그 분석도 하면 좋겠다 싶었다. 물론 목적지는 파이썬이지만, 자바로도 비슷한 작업을 할 수 있다는 게 반가워서 가지고 노는 중이다. Gradle 기준 다음과 같은 의존성을 추가한다. dependencies { implementation group: 'tech.tablesaw', name: 'tablesaw-core', version: '0.43.1' // 데이터 분석 implementation group: 'tech.tablesaw', name: 'tablesaw-jsplot', version: '0.43.1' // 데이터 시각화 } 나머지 의존성은 어차피 알아서 하는 거니까 생략했다. 나는 총 두 개의 CSV파일을 이용해서 연습을 진행했다. 하나는 친절하게 한글로 ..
목차 개발에 발을 담그고 나서 배포는 설정싸움이라는 말을 자주 하는데, 도무지 엘라스틱 서치 설정이 내 맘대로 되지가 않아서 거치적거린다. 새로운 세계에 들어간다는 건 항상 단어공부와 인내심으로 이루어지는 것 같다. 머릿속에서 자꾸만 미끄러지는 새로운 단어도 외울 겸, 마주하고 있는 기술에 대해 요약하자. 시작하기 전에 말이 긴 건 조금 화가 나서 그렇다.. Lucene 아파치 루씬, 혹은 루씬은 아파치 재단의 후원하에 만들어지는 오픈소스&&고성능 검색 라이브러리 소프트웨어이다. 자바로 이루어져 있으나 다른 언어에서도 사용 가능하도록 변경되었으며, 라이브러리라는 말처럼 자체적으로 정보 수집 기능은 가지고 있지 않다. 또한 모든 응용프로그램에 적합하지만 특히 웹 검색과 로컬 사이트의 검색 구현에 유용하다고..
캐시에 대해서는 두 번이나 정리한 적이 있으므로, 오늘은 바로 본론으로 들어간다. 2022.12.11 - [Development/Technical Interview] - [면접 준비 - Java?]Primary Memory [면접 준비 - Java?]Primary Memory 어제오늘 JVM의 메모리 구조를 공부하다가 속도와 용량, 일처리 속도의 최적화에 대해 조금 더 알고 싶어서 찾아보게 되었다. 당연하게도 관련 자료가 매우 많고 논문까지 쌓여있는(...) 수준이라 gnidinger.tistory.com 2023.01.14 - [Development/Database] - [Redis]캐시(Cache), 그리고 레디스(Redis) [Redis]캐시(Cache), 그리고 레디스(Redis) Cache 전에..
지난 글에 적었듯이 레디스는 다양한 자료형을 지원한다. 해서 조금씩 공부하면서 현재 진행 중인 프로젝트의 캐싱이나 채팅방, 인증번호 저장 등을 모조리 레디스를 사용하도록 교체할 꿈을 꾸고 있는데, 바로 적용하려니 기본 연산이 잘 들어오지 않아 힘들었다. 따라서 이번 글은 레디스에서 지원하는 자료형의 연산과 기본 명령어 등을 연습하려고 한다. 먼저 스프링부트 프로젝트를 하나 생성해서 내장 레디스를 사용하기 위한 의존성을 추가한다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'it.ozimov:embedded-redis:0.7.2' } 나머지 의존성은 필요에 따라 추가하면 되겠다...
Cache 전에 메모리에 대한 개념을 정리할 때, 캐시에 대해 적은 적이 있다. 쉽게 말하자면 캐시란 CPU와 메인 메모리 사이의 속도차에 의해 발생하는 병목현상을 줄이기 위해 존재한다. 이를 위해 CPU가 자주 사용할 것으로 예측되는 데이터를 메인 메모리로부터 미리 로드해 두는 기능을 하는데, 이때 적중률을 높이기 위해 사용되는 개념이 시간/공간/순차적 지역성이었다. 추가로 CPU는 메인 메모리를 읽기 전에 먼저 캐시를 확인하도록 조정되어 있다. Redis 레디스는 2009년 미국에서 태어난, 비교적 젊은 DBMS이다. 태어난지 얼마 되지 않았지만, NoSQL In-Memory DB 중에선 그 순위가 최상위권(4위)에 위치한다. 조금 구체적으로 레디스는 기존의 테이블 모양이 아닌 키-값(Key-Valu..
이전 글에서 봤듯이, SQL은 구조화된(Structured) 테이블을 사용하는 관계형 데이터베이스(RDB -Relational Database)에서 주로 쓰인다. 관련 글: https://gnidinger.tistory.com/444 [데이터베이스]SQL SQL(Structured Query Language - 구조화된 쿼리 언어)은 데이터베이스용 프로그램 언어이다. 에스큐엘 혹은 시퀄이라고 읽으며, 데이터베이스 시스템에서 자료를 처리하는 용도로 사용된다. 이름에서 gnidinger.tistory.com 사전에 정의된, 구조화된 테이블을 Relation이라고도 부르기 때문에 테이블을 사용하는 데이터베이스를 관계형 데이터베이스라고 부르는 것이다. 혹은, 엔티티끼리 관계를 맺는 형태로 데이터베이스가 구성되고..
NoSQL는 Not only SQL의 약자로, SQL만을 사용하지 않는 DBMS(DataBase Management System)을 말한다. 관계형 데이터베이스를 주로 사용하는 SQL과 달리 여러 유형의 데이터베이스를 사용하는 넓은 범위라고 보면 된다. SQL과 NoSQL은 데이터가 만들어지는 방식, 데이터의 종류, 저장하는 방법 등이 다르다. 하나씩 천천히 살펴보자. 데이터 저장(Storage) 관계형 DB SQL을 이용해 정해진 규칙에 따라 만들어진 테이블에 데이터를 저장 미리 작성된 스키마를 기반으로 정해진 형식에 맞춰 데이터를 저장해야 함 NoSQL - 여러가지 모델을 사용해 데이터를 저장한다. Key-Value Store - 데이터가 Key-Value의 쌍으로 저장된다. Value엔 모든 형태의..
SQL(Structured Query Language - 구조화된 쿼리 언어)은 데이터베이스용 프로그램 언어이다. 에스큐엘 혹은 시퀄이라고 읽으며, 데이터베이스 시스템에서 자료를 처리하는 용도로 사용된다. 이름에서 미루어볼 수 있듯이 SQL은 구조화된(Structured) 테이블을 사용하는 관계형 데이터베이스(RDB -Relational Database)에서 주로 쓰인다. SQL문법을 보기 전에, 자주 쓰이는 단어에 먼저 익숙해지자. 반드시 알고 있어야 할 키워드 RDB를 사용할 때 각 부분을 부르는 명칭들이다. 소통을 위해 반드시 알고 있어야 한다. 이름 내용 데이터(Data) 각 항목에 저장되는 값 테이블(Table, Relation) 자료의 구조를 2차원 표로 나타낸 것 컬럼(Column, Fiel..
- Total
- Today
- Yesterday
- RX100M5
- 맛집
- 지지
- a6000
- 자바
- 면접 준비
- Backjoon
- 세계여행
- 스트림
- BOJ
- 남미
- 파이썬
- 기술면접
- 중남미
- 동적계획법
- spring
- 세계일주
- Python
- 알고리즘
- Algorithm
- 야경
- 세모
- 칼이사
- java
- 유럽
- 스프링
- 백준
- 여행
- 유럽여행
- 리스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |