| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 백엔드
- AOP
- Database
- Si
- 엘라스틱서치
- 프로젝트관리
- spring
- db
- 스프링
- kibana
- redmine
- 일감관리
- 자바
- 데이터베이스
- 이슈관리
- 개발자
- java
- spring aop
- 웹프론트
- backend
- 인덱스
- elasticsearch
- PreparedStatement
- 오라클
- 비전공개발자
- frontend
- It
- PM
- 레드마인
- 검색
- Today
- Total
목록Dev/Database (18)
리타의 저장소
Table Random Access 최소화 튜닝인덱스 컬럼 추가기존 인덱스에 컬럼 추가PK 인덱스에 컬럼 추가⇒ 인덱스에 컬럼 추가했을 때, 클러스터링 팩터가 나빠질 수 있다.→ 인덱스 내에서 키 값이 같은 레코드는 rowid 순으로 정렬됨. 근데, 여기서 변별력이 좋은 컬럼이 추가되면, 해당 컬럼 순으로 정렬되어 클러스터링 팩터를 나쁘게 만들 수 있음.변별력이 좋지 않은 컬럼 뒤에, 변별력이 좋은 컬럼을 추가 할때는 유의해야할 필요가 있음.IOT (Index Organized Table)테이블을 인덱스 구조로 생성. 테이블 인덱스 구조로 만드는 구문create table index_org_t (a number primary key, b varchar(10)) organization index; 힙 구조..
인덱스의 활용 인덱스Key + ValueB*tree 인덱스 구조 RowId (제한된 포맷)데이터파일 (4자리)블록 번호 (8자리)로우번호 (4자리)RowID (확장 포맷)데이터 오브젝트 번호 (6자리)데이터 파일 번호 (3자리)블록 번호 (6자리)로우 번호 (3자리) 인덱스의 탐색 수직적 탐색Root > Branch > Leaf시작점 검색Random Access ROOT : 최상위 노드 BRANCH : ROOT & LEAF 의 연결고리 LEAF : KEY + Rowid (블록주소) > leaf node는 정렬되어 있음수평적 스캔Leaf Block의 시작점 ~ 종료점 까지Sequential Access 테이블 Random Access데이터 블록을 읽는 케이스 인덱스의 손익 분..
스프링 프로젝트 생성하고 ES랑 연동하기spring starter io에서 우선 프로젝트를 생성한다. 생성할때, Spring Data Elasticsearch를 추가. 그외 Lombok, JPA, PostgreSQL 등 기타 프로젝트에 필요한 설정도 추가해줬다. 자 그럼 users Document를 셋팅 해줘보자. (Spring -- Elasticsearch 연동)* 주의 : 처음에는 그냥 실험하는 거니까 라는 마인드로 편의상 @Data 어노테이션을 사용한 코드를 업로드 했었으나, 다들 알다시피 실무에선 지양하는게 좋다. 그래서 그냥 바꿨다... UserDocument package com.salary.backend;import lombok.AllArgsConstructor;import lombok.D..
인덱스 만들기 #이런식으로 만든다.PUT /users # 확인 GET /users# DELETEDELETE /boards 만약 DELETE 문으로 인덱스를 삭제하게 된다면, not found exception이 뜬다. "index_not_found_exception", 인덱스에 매핑 정의하기 쉽게 얘기하면 users 라는 인덱스(테이블)에, name, age, is_active라는 컬럼을 정의해준거라고 생각하면 된다.PUT /users/_mappings{ "properties" : { "name" : {"type": "keyword"}, "age" : {"type": "integer"}, "is_active": {"type": "boolean"} }} 확..
Elasticsearch의 기본 용어vs MySQL Elasitcsearch도 데이터베이스다.고로, Elasticsearch에 데이터를 저장/조회/수정/삭제할 수 있다.데이터를 저장하기 위해 가장 먼저 인덱스(index)를 만든다. (여기서 인덱스는 마치 DB에서의 테이블 같은거라고 생각하면 편하다)인덱스를 만들 때 어떤 유형의 데이터를 넣을 지 매핑(mapping)을 정의한다.테이블의 필드(field)에 맞게 데이터를 저장한다. MySQLElasticsearch테이블(table)인덱스(index)컬럼(column)필드(field)레코드(record), 로우(row)도큐먼트(document)스키마(schema)매핑(mapping)주의)우리가 흔히 사용하는 Oracle, MySQL에서 말하는 Index와 ..
기본 아키텍처 Kibana, Elastic Search 설치 및 실행하기1. compose.yml 파일 설정 수정 services: elastic: image: docker.elastic.co/elasticsearch/elasticsearch:8.17.4 # 8.17.4 버전 ports: - 9200:9200 # 9200번 포트에서 Elasticsearch 실행 environment: # 아래 설정은 개발/테스트 환경에서 간단하게 테스트하기 위한 옵션 (운영 환경에서는 설정하면 안 됨) - discovery.type=single-node # 단일 노드 - xpack.security.enabled=false # 보안 설정 - xpack.se..
MySQL → 3306번 포트 & SQL문으로 요청을 보내서, 데이터 조회 가능!Elastic Search → 9200번 포트 & Rest API로 데이터 조회 가능!그러니까, Elastic Search 의 경우 9200번 포트로 Rest API 형태로 보내면 된다. 예시 (데이터 삽입)MySQLINSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');Elastic Searchcurl -X POST "localhost:9200/users/_doc" -H 'Content-Type: application/json' -d'{ "name": "Alice", "email": "alice@example.com"}' Elastic Search의..
1. Docker 설치 Docker: Accelerated Container Application DevelopmentDocker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.www.docker.com OS 에 맞는 Docker 를 설치하고, 계정 로그인을 해준다.계정이 없다면, 계정 생성 후 로그인.간혹, wsl update 가 필요한 경우가 있다. 그럼그냥 해주면 된다.Ubuntu가 설치되어있지 않다면, Ubuntu도 설치해주면 된다./////////////////////////////..
Elasticsearch ?Elasticsearch는 Apache Lucene을 기반으로 한 오픈 소스 검색 및 분석 엔진으로, 대량의 데이터를 저장하고 검색하는 데 특화되어 있습니다. 높은 확장성과 빠른 검색 속도를 제공하며, 앱 검색, 로깅, 메트릭 분석 등 다양한 분야에서 활용됩니다. 특히 ELK 스택의 중심 역할을 하며, 데이터를 저장하고 인덱싱하여 검색 및 분석하는 기능에 강점이 있습니다. 검색, 분석에 최적화된 데이터 베이스데이터 수집 및 분석ElasticSearch(데이터 저장), Logstash(데이터 수집 및 가공), Kibana(데이터 시각화) 를 같이 활용해 데이터를 수집 및 분석 한다.대규모 데이터 (ex. 로그 등)를 수집 하는데 최적화 되어있음검색 기능 최적화데이터가 많더라도..
인덱스 설계는 데이터베이스 성능 최적화의 핵심인덱스 종류B-Tree 인덱스 Unbalanced Index B-Tree의 "B"는 Balanced를 의미함. Index Skew 현상 대량 삭제 후 발생하는 현상 인덱스 스캔 효율 저하 (다시 채워지기 전까지 성능 문제 발생) 비트맵 인덱스Distinct 개수가 적을 때 유용대용량 테이블에서 여러 개의 인덱스가 필요할 때 적합DW (Data Warehouse) 테이블에서 주로 사용단독 사용보다는 여러 개를 묶어서 활용함수 기반 인덱스 활용 사례 암호화 솔루션 리버스 키 인덱스부하 분산에 유리Equal = 조회만 가능범위 검색(Between, Like 등)에는 사용 불가클러스터 인덱스클러스터형 인..