728x90
반응형

전체 글 168

[Database] 인덱스(Index)

🎯 인덱스(Index) 데이터베이스 인덱스(Index)는 테이블 내의 데이터를 빠르게 검색할 수 있도록 지원하는 자료 구조입니다. 인덱스는 테이블의 특정 열(column)에 대해 생성됩니다. 이렇게 생성된 인덱스는 해당 열에 저장된 데이터의 값을 기준으로 정렬되어 있으며, 이를 이용하여 데이터를 빠르게 검색할 수 있습니다. 인덱스의 원리 인덱스는 B-tree나 Hash Table과 같은 자료구조를 사용하여 구현됩니다. B-tree 인덱스는 데이터를 정렬하고 이진탐색(binary search) 알고리즘을 사용하여 검색합니다. 반면 Hash 인덱스는 해시 함수(hash function)을 사용하여 검색합니다. 인덱스의 장단점 ⭐️ 인덱스의 장점 빠른 검색 속도 인덱스를 사용하면 데이터를 더 빠르게 검색할 수..

Database 2023.03.26

[Database] 이상(Anomaly)

🎯 이상(Anomaly) 데이터베이스에서 이상(anomaly)은 테이블의 구조나 조작에 문제가 발생하여 정보의 일관성, 정확성, 완전성 등을 보장할 수 없는 현상을 말합니다. 이상은 보통 정규화를 제대로 하지 않았거나, 테이블 간의 관계를 잘못 설정하여 발생하는 경우가 많습니다. 이상에는 크게 삽입 이상, 삭제 이상, 갱신 이상이 있습니다. 삽입 이상: 새로운 데이터를 삽입할 때, 원하는 정보를 제공하기 위한 모든 속성 값들을 함께 입력하지 않으면 삽입할 수 없는 상황이 발생하는 경우입니다. 삭제 이상: 특정 데이터를 삭제할 때, 그 데이터와 관련된 다른 정보까지 함께 삭제되는 문제가 발생하는 경우입니다. 갱신 이상: 중복된 데이터 중 일부만 변경되어 일관성이 없어지는 문제가 발생하는 경우입니다. 따라서..

Database 2023.03.26

[Database] 정규화(Normalization)

🎯 정규화(Normalization) 정규화(Normalization)는 데이터베이스 설계에서 중복 데이터를 최소화하고 데이터 일관성을 유지하기 위해 데이터를 구조화하는 과정입니다. 정규화는 여러 단계로 나눠서 진행됩니다. 각 단계는 더 높은 정규화 수준을 의미하며, 보통 1NF(First Normal Form), 2NF, 3NF, BCNF(Boyce-Codd Normal Form), 4NF, 5NF까지 진행됩니다. 이 단계별로 데이터베이스 구조를 변형해나가는 것을 정규화라고 합니다. 정규화를 수행하면 중복 데이터를 최소화할 수 있어 데이터 저장 공간을 절약할 수 있고, 데이터 일관성을 유지하며 삽입, 수정, 삭제 등의 작업을 보다 효율적으로 수행할 수 있습니다. 하지만 너무 많은 정규화가 일어날 경우,..

Database 2023.03.26

[Database] SQL vs NoSQL

🎯 SQL vs NoSQL SQL(Structured Query Language) SQL(Structured Query Language)은 관계형 데이터베이스에서 사용하는 쿼리 언어입니다. SQL을 사용하면 데이터베이스에 저장된 데이터를 검색하거나 조작하는 등의 작업을 할 수 있습니다. SQL은 데이터의 구조와 유형을 정의하고, 데이터를 삽입, 수정, 삭제, 검색하는데 사용됩니다. SQL은 데이터베이스의 스키마를 정의하는 데이터 정의 언어(DDL), 데이터를 조작하는 데이터 조작 언어(DML), 데이터를 검색하는 데이터 검색 언어(DQL), 데이터를 제어하는 데이터 제어 언어(DCL)로 구성되어 있습니다. SQL은 대부분의 관계형 데이터베이스 관리 시스템(RDBMS)에서 지원됩니다. ⭐️ SQL의 장점 ..

Database 2023.03.26

[Effective Java] 아이템 59. 라이브러리를 익히고 사용하라.

🎯 아이템 59. 라이브러리를 익히고 사용하라. “바퀴를 다시 발명하지 마라 (Don’t reinvent the wheel)” 아주 특변한 나만의 기능이 아니라면 누군가 이미 라이브러리 형태로 구현해놓았을 가능성이 크다. 표준 라이브러리를 사용하면 좋은 이점 코드를 작성한 전문가의 지식과 여러분보다 앞서 사용한 다른 프로그래머들의 경험을 활용할 수 있다. 핵심적인 일과 크게 관련 없는 문제를 해결하느라 시간을 허비하지 않아도 된다는 것이다. 노력하지 않아도 성능이 지속해서 개선된다는 점이다. 기능이 점점 더 많아진다. 작성한 코드가 많은 사람에게 낯익은 코드가 된다. 참고 자료 Joshua Bloch, 『Effective Java 3/E』, 개앞맵시 옮김, 프로그래밍인사이트(2018) http://www..

Java 2023.03.26

[Effective Java] 아이템 58. 전통적인 for 문보다는 for-each 문을 사용하라.

🎯 아이템 58. 전통적인 for 문보다는 for-each 문을 사용하라. 전통적인 for문과 비교했을 때 for-each문은 명료하고, 유연하고, 버그를 예방해준다. 성능 저하도 없다. 가능한 모든 곳에서 for문이 아닌 for-each문을 사용하자. 하지만 안타깝게도 for-each문을 사용할 수 없는 상황이 세 가지 존재한다. 1️⃣ 파괴적인 필터링 컬렉션을 순회하면서 선택된 원소를 제거해야 한다면 반복자의 remove 메서드를 호출해야한다. 자바8부터는 Collection의 removeIf 메서드를 사용해 컬렉션을 명시적으로 순회하는 일을 피할 수 있다. 2️⃣ 변형 리스트나 배열을 순회하면서 그 원소의 값 일부 혹은 전체를 교체해야 한다면 리스트의 반복자나 배열의 인덱스를 사용해야한다. 3️⃣ ..

Java 2023.03.26
728x90
반응형