데이터베이스 인덱스

만약 네가 책을 한 권 읽은 적이 있다면, 너는 색인이 무엇인지 절대로 알고 있을 것이다.당신이 환상, 소설을 좋아하든 공상과학을 좋아하든 (유죄) 모든 이런 유형의 작품은 통상적으로 하나의 공통점이 있다. 그것은 모두 색인이 있다!이 색인은 통상적으로'디렉터리'라고 불리지만, 그것은 같다. 적어도 이 책에 포함된 내용에 대한 정보는 한 페이지가 있다.
이 표의 구조도 데이터베이스에 있는 표와 매우 유사하며 적어도 하나의 키/값이 맞다.관건은 일반적으로 장절의 제목이고 가치는 장절이 시작되는 페이지이다.
만약 이런 색인이 없다면, 우리는 우리가 찾으려는 장과 절을 찾을 때까지 이 책의 매 페이지를 뒤져야만 할 것이다.
더 심각한 것은, 만약 우리가 단지 그 장의 발췌문을 찾고 있을 뿐이라면, 이 책은 장과 절이 없다면?페이지 번호가 없습니까?그건 너무 무서워!다행히도, 사실은 그렇지 않다. 이 책의 목록은 우리가 찾으려는 장과 그 페이지가 있는 정확한 페이지를 쉽게 찾을 수 있게 한다.
데이터베이스에 대한 색인을 작성하는 것은 같은 목적을 가진다. 개발자가 최소한의 입력/출력(I/O) 조작과 빠른 아선형 시간 복잡도로 그들이 찾고 있는 정보를 검색하도록 돕는 것이다.

데이터 기반


데이터베이스 속의 인덱스는 그 이용 능력에 있어서 놀랍지만, 그것들이 차지하는 공간은 매우 작다.그것들은 데이터베이스 성능을 향상시키는 데 도움이 되는 모든 데이터 구조일 수 있다.
개발자는 보통 B+ 트리를 사용하여 색인을 합니다.B+ 트리는 키를 압축하는 방식으로 정보를 저장하여 빠른 검색률을 허용하는 균형 데이터 구조입니다.

또 다른 강력한 인덱스 구조는 (위 그림) 이다. 또한 균형적이지만 정보를 키/값 쌍에 저장한다.
색인은 테이블에서 최소한 한 열 (여러 열이 아니라면) 을 사용하여 생성됩니다.색인도 표준 구조를 따르지 않기 때문에 실현 기술은 개발자에게 남길 수 있다.
그것들의 구조에 관해서는 약간의 문법 세부 사항이 있지만, 전체적으로 말하자면, 관련된 의미는 더욱 적다(AJAX 참조).

이익과 균형


색인은 데이터베이스의 한 부분으로 키나 데이터베이스 키라고 부른다.데이터베이스의 이 마이크로 버전은 디스크 블록 주소의 얕은 복사본이나 조회 필드와 직접적인 링크를 유지하는 자신의 실체입니다.
이 미니 라이브러리도 공간을 차지하기 때문에 우리는 빠른 검색 시간과 데이터베이스에 저장할 수 있는 기록량과 추가 메모리 사이를 평가했다.개발에서 지수를 세우는 데 필요한 초기 시간을 작은 단점으로 볼 수도 있지만, 솔직히 말하자면, 이것은 결국 상당히 공평한 거래라는 것을 발견했다.

색인에 있는 첫 번째 열만 사용하여 특정 필드를 검색할 수 있지만, 색인에 있는 비교적 큰 열 검색 필드만 사용할 수는 없습니다. 이것이 바로 색인을 할 때 열의 순서를 유지하는 것이 중요한 이유입니다.
색인에서 서열을 유지함으로써 우리는 결과를 보장하는 병행 처리 알고리즘을 사용할 수 있고 아선형 시간의 복잡도를 유지할 수 있다.우리가 마침내 얻은 것은 우리의 입력/출력 조작을 줄이는 유용한 트리 구조이다.

시공 중의 구속


우리 중 많은 사람들은 특히 일을 하면서 구조를 절대적으로 갈망한다.색인은 난잡한 생각과 데이터를 조직이 좋은 시스템으로 전환해야 하는 개발자에게 완벽하다.우리가 데이터베이스에 설정한 제약을 감시함으로써 색인은 구조와 순서를 유지했다.지수는 실제적인 제약이 아니라 완화되고 강제적으로 집행될 뿐이라는 것을 다시 한 번 말씀드리겠습니다.
이러한 제약은 만들 때 데이터베이스에 놓여 있고 데이터베이스 관리 시스템(DBMS)을 사용하여 이루어진다. 예를 들어 mySQL,mongoDB (무모드) 또는mariaDB 등이다.
제가 가장 좋아하는 것은 몬고DB입니다. 몬고DB의 가독성과 자바스크립트 함수의 사용이기 때문에 이러한 제약을 설정하는 예시를 보겠습니다.
 //create a new mongoDB schema using mongoose
 const artistSchema = new mongoose.Schema({
 //set the constraints for the index to moderate the artistId and name
 id: { type: Number, index: true, unique:true },
 name: { type: String, primary: true },
 hasVocals: Boolean,
 hasMoves: Boolean,
 hasBags: Mixed,
});



//create models for the db
const Beyoncé = mongoose.model('Beyoncé', artistSchema);
const Nicki = mongoose.model('Nicki', artistSchema);
const Rihanna = mongoose.model('Rihanna', artistSchema);
너무 좋아요.우리는 이미 데이터베이스 모델을 구축하고 기록을 추가했다. 이제 우리는 (이 믿을 수 없는 기본 예시가 있어도) 데이터 바다에서도 특정 필드를 쉽게 찾을 수 있음을 볼 수 있다.만약 우리가 리한나의 정보를 찾고 싶다면, 우리가 해야 할 일은 그녀의 이름이나 id를 입력하여 그녀의 필드 주소를 얻는 것이다.정확한 입력의 신속하고 확실한 결과를 제공함으로써 색인이 매우 유용하다.

어쨌든


색인 데이터 구조만 추가하면 표준 데이터베이스를 슈퍼 데이터베이스로 쉽게 바꿀 수 있습니다!내 예는 간단하지만 수천 개의 문서를 검색해서 특정한 정보의 위치를 정확하게 정하는 색인이 없다면 얼마나 어려운지 상상해 보자.
만약 색인이 없다면, 우리는 느린 선형 시간의 복잡도에 빠질 뿐만 아니라, 우리가 반드시 실행해야 하는 입력과 출력 작업의 수량을 증가시킬 것이다. 예를 들어 실제 데이터를 찾으면, 중단되거나 계속 순환할 것이다.
다음에 데이터베이스 구축 모델을 만들 때 제약을 설정하고 일치하는 데이터 구조를 사용하여 색인을 만드십시오.모든 개발자에게 어디서든: 당신이 해냈으니 매우 기쁠 것입니다!
읽어주셔서 감사합니다!

좋은 웹페이지 즐겨찾기