본문 바로가기

Programming120

[Database] 인덱스 (Index) 3장 : B+-Tree Index 기본 https://kghworks.tistory.com/150 [Database] 인덱스 (Index) 2장 : Ordered Index https://kghworks.tistory.com/149 [Database] 인덱스 (Index) 1장 : 필요성과 기본 컨셉 특정 DBMS에 대한 인덱스 구조가 아닌 데이터베이스 시스템 자체에 대한 인덱스에 대해 정리한다. 기본 개념, 종류와 메커 kghworks.tistory.com 2장 Ordered Index에서 B+-Tree를 언급하지 않았다. B+-Tree Index는 가장 흔히 쓰이는 인덱스로 설명할 양도 많다. 이번에는 포스팅 2개에 걸쳐 B+-Tree Index의 기본과 확장에 대해 정리해보려 한다. 목차 B+-Tree Index 의 필요성과 기본 구조 .. 2023. 10. 19.
[Database] 인덱스 (Index) 2장 : Ordered Index (순서 인덱스) https://kghworks.tistory.com/149 [Database] 인덱스 (Index) 1장 : 필요성과 기본 컨셉 특정 DBMS에 대한 인덱스 구조가 아닌 데이터베이스 시스템 자체에 대한 인덱스에 대해 정리한다. 기본 개념, 종류와 메커니즘에 대해 말하겠다. 전체적인 흐름은 데이터베이스 시스템 (Abraham Silb kghworks.tistory.com 앞 포스팅에서 인덱스의 기본 분류는 Ordered Index (정렬된 인덱스)와 Hash Index (해시함수 기반 인덱스)로 나뉠 수 있다고 했다. 두 번째 포스팅에선 인덱스 종류 첫 번째 Ordered Index에 의 기본 성질과 어떤 종류들이 있는지 살펴본다. 인덱스의 종류 중 B+-Tree의 경우 내용이 많으므로 Ordered In.. 2023. 10. 12.
[Database] 인덱스 (Index) 1장 : 필요성과 기본 컨셉 특정 DBMS에 대한 인덱스 구조가 아닌 데이터베이스 시스템 자체에 대한 인덱스에 대해 정리한다. 기본 개념, 종류와 메커니즘에 대해 말하겠다. 전체적인 흐름은 데이터베이스 시스템 (Abraham Silberschatz , Henry F. Korth , S. Sudarshan 저)의 14장 Indexing을 따른다. 1개 이상의 DBMS에서 인덱스를 생성해봤고, 인덱스에 대한 이해가 어느 정도 있다면 더 수월하게 포스팅을 읽어나갈 수 있을 것이다. 첫 번째 포스팅으로 데이터베이스에서 인덱스의 필요성과 기본 콘셉트를 정리한다. 목차 인덱스의 필요성 좋은 인덱스를 판별하는 기준 search key 인덱스 생성하기 인덱스의 필요성 데이터베이스의 인덱스를 책의 색인에 비유하곤 한다. 책의 색인 데이터베이스 인덱.. 2023. 10. 12.
[개발일지] 채번(採番) 개발하기 채번(採番)이란 번호를 딴다는 의미로 번호표의 목적으로 DBMS에서 PK 혹은 고윳값을 부여할 때 사용하는 용어다. 일본말이라고 함. 채번되는 값이 업무적으로 의미 있는 값이건, 단순 고윳값이건 각각의 목적이 충분히 존재한다. 나의 경우 고객에게 노출하는 값은 아니었지만 고윳값을 가지면서 SELECT도 가능해야 했다. (이건 이후에 후술) 웹서비스에서 채번 하는 업무는 꽤 있다. (계좌번호, 자동차 번호판 등) 단순히 sequence (ORACLE), auto_increment (MYSQL) 등 사용해 채번 할 수 있지만 그 이상의 요구사항이 존재한다. 채번 결과가 어떤 포맷을 유지해야 한다던지 등..(계좌번호, 자동차 번호판 등) 이번 포스팅에서는 채번 프로세스를 어떻게 개발하게 되었는지 과정과 결과를.. 2023. 10. 5.
[Java] Java 8 사용하기 : 람다와 스트림으로 리팩터링 목차 람다로 대체할 수 있는 코드 method reference로 한번 더 리팩터링 Streams를 활용한 declarative programming 람다와 OOP 디자인 패턴 https://kghworks.tistory.com/140 [Java] Java 8 사용하기 : 가독성과 유연성, 람다와 Streams API 목차 Java 8로 향상되는 가독성과 유연성 익명 클래스 -> 람다 표현식 람다 표현식 -> 메서드 참조 명령적 데이터 가공 -> Streams API 함수형 인터페이스 Java 8 이상의 버전을 사용하면서 legacy를 Java 8 kghworks.tistory.com 앞선 포스팅에서 Java 8이 제공하는 람다와 스트림에 대한 유용함을 간단히 알아보았다. 이번에는 기존 코드들을 람다로 .. 2023. 9. 23.
[개발일지] Java application에서 RDBMS에 bulk insert 목차 step1. 최적의 bulk insert sql script 찾기 step2. Java 구현 : UNION ALL batch insert Spring Data JPA saveAll과의 성능 비교 정리 다들 엑셀을 참 좋아한다. 몇만 개의 row를 가지고 엑셀로 이리저리 조작하는 사업부서 분들을 보면 경이롭다. 동시에 컴퓨터가 매우 힘들어하는 게 옆에서도 느껴진다. 아무튼 이번에 엑셀 업로드 기능으로 대용량으로 테이블에 insert 할 기능이 생겼다 (최대 수만 건 규모). 이런 대용량 insert는 실제 요구사항이 있는 편이다. 사업 부서에서 이벤트 소스를 모아 엑셀 파일로 개발팀에 전달한다던지, 일정 기간 동안 소스를 모집해서 디비 테이블에 넣는다던지, 백오피스 시스템에서 엑셀 업로드 기능을 활용.. 2023. 9. 21.