: 체계적으로 구성된 데이터의 모음
데이터를 효율적으로 저장 및 관리, 검색하기 위해 사용한다.
= 데이터베이스 관리 시스템 (Database Management System)
데이터베이스를 관리하는 소프트웨어로, 데이터를 저장, 검색, 업데이트 및 관리하는 기능을 제공한다.
일반적인 DBMS에는 MySQL, Oracle, Microsoft SQL Server 및 PostgreSQL과 같은 제품이 포함된다.
= 관계형 데이터베이스 (Relational Database Management System)
테이블로 구성된 데이터베이스로, 데이터는 열과 행으로 구성된 테이블에 저장된다.
: RDB에서 데이터를 저장하는 방식 중 하나로, 행과 열로 구성된 데이터의 집합
각 행은 개별 레코드를 나타내고, 각 열은 레코드의 속성을 나타낸다.
e.g. 고객 테이블은 고객 정보를 저장하는 데 사용하며, 각 열은 고객의 이름, 주소, 전화번호 등의 정보를 저장한다.
: 테이블에서 하나의 레코드
튜플은 테이블 내의 한 행에 해당하며, 여러 필드(attribute/column)의 조합으로 구성된다.
e.g. 고객 테이블의 각 튜플은 고객 한 명에 대한 정보를 담고 있다.
: 테이블의 열
테이블의 각 열은 특정 유형의 데이터를 저장하는 데 사용되며, 이 열은 특정한 속성이나 정보를 나타내게 된다.
해당 열에 저장된 값은 모든 튜플에 공통적이다.
e.g. 고객 테이블의 어트리뷰트는 이름, 나이, 주소일 수 있으며, 모든 튜플에서 이 어트리뷰트에 해당하는 고객 의 정보가 저장된다.

= 비관계형 데이터베이스 (Not Only SQL)
전통적인 관계형 데이터베이스 시스템(RDBMS)와는 다른 형태의 데이터베이스를 가리키는 용어

: 검색 엔진과 검색 결과를 표준화하는 오픈 소스 표준
: Elasticsearch나 Opensearch와 같은 검색 엔진에서 데이터를 저장하고 검색하기 위한 구조적인 단위로, 도큐먼트들이 모여 있는 논리적인 데이터의 집합을 의미
: 인덱스를 물리적으로 분할한 조각

ㄴ> 하나의 인덱스가 5개의 샤드로 저장되도록 설정된 예
인덱스를 생성할 때 지정한 샤드는 프라이머리 샤드로 분할되며, 프라이머리 샤드는 원본 데이터를 저장하고 검색하는 데 사용된다.
프라이머리 샤드의 복제본으로 데이터의 안정성과 가용성을 위해 사용된다.
각 프라이머리 샤드는 여러 개의 레플리카 샤드를 가질 수 있으며, 이 복제본들은 다른 노드에 위치하여 데이터 백업을 담당하며, 검색 요청에 대해서도 빠르게 응답할 수 있게 한다.
➡️ 각 샤드는 인덱스의 일부를 저장하며, 복제본을 통해 데이터의 안전성을 보장한다.
: 정확한 단어 일치
해당 필드에 정확히 일치하는 문서만을 반환한다.
{
"query": {
"term": {
"user": "John Doe" // user 필드에서 'John Doe'를 가진 문서 검색
}
}
}
: 여러 용어에 대한 일치
Terms 쿼리는 OR 로직으로 작동하여 주어진 여러 용어 중 하나라도 일치하면 문서를 반환한다.
{
"query": {
"terms": {
"status": ["pending", "approved", "rejected"]
// status 필드에서 'pending', 'approved', 'rejected' 값을 가진 문서 검색
}
}
}
: 텍스트를 기반으로 한 텍스트 검색
특정 필드에서 일부 텍스트를 검색하고 싶을 때 사용하며, 부분적인 일치도 허용한다.
{
"query": {
"match": {
"message": "Elasticsearch is powerful"
// message 필드에서 'Elasticseach is powerful'`이라는 문장을 포함한 문서 검색
}
}
}
노드를 또 세분화 할 수 있다는 건 처음알았네요..!
좋은 정보 읽고 갑니다 ~