Development Tip

관계형 데이터베이스와 비 관계형 데이터베이스의 차이점은 무엇입니까?

yourdevel 2020. 10. 12. 08:14
반응형

관계형 데이터베이스와 비 관계형 데이터베이스의 차이점은 무엇입니까?


MySQL, PostgreSQL 및 MS SQL Server와 같은 솔루션은 관계형 데이터베이스 시스템이고 NoSQL, MongoDB 등은 비 관계형 DBMS라는 것을 알고 있습니다.

그러나 두 시스템 유형의 차이점은 무엇입니까?

평신도 용어가 바람직합니다.

감사.


관계형 데이터베이스는 SQL == Structured Query Language로 추출 된 수학적 기반 (집합 이론, 관계형 이론)을 가지고 있습니다.

NoSQL의 다양한 형태 (예 : 문서 기반, 그래프 기반, 객체 기반, 키-값 저장소 등)는 단일 기반 수학 이론을 기반으로 할 수도 있고 그렇지 않을 수도 있습니다. S. Lott가 올바르게 지적했듯이 계층 적 데이터 저장소에는 실제로 수학적 기반이 있습니다. 그래프 데이터베이스도 마찬가지 입니다.

NoSQL 데이터베이스에 대한 범용 쿼리 언어를 모릅니다.


흠, 질문이 무엇인지 잘 모르겠습니다.

제목에서는 데이터베이스 (DB)에 대해 묻는 반면 텍스트 본문에서는 데이터베이스 관리 시스템 (DBMS)에 대해 질문합니다. 이 둘은 완전히 다르며 다른 답변이 필요합니다.

DBMS는 DB에 접근 할 수있는 도구입니다.

데이터 자체 외에 DB는 데이터가 어떻게 구성되는지에 대한 개념입니다.

따라서 OO 기반이 아닌 컴파일러를 사용하여 Oriented Object 방법론으로 프로그래밍 할 수있는 것과 마찬가지로 RDBMS없이 관계형 데이터베이스를 설정하거나 RDBMS를 사용하여 비 관계형 데이터를 저장할 수 있습니다.

나는 관계형 데이터베이스 (RDB)가 무엇을 의미하는지에 초점을 맞추고 시스템이 다른 사람들에게 어떤 일을하는지에 대한 논의를 남길 것입니다.

관계형 데이터베이스 (개념)는 서로 다른 '테이블'또는 서로 다른 유형의 데이터 버킷의 정보를 연결할 수있는 데이터 구조입니다. 데이터 버킷에는 키 또는 인덱스 (버킷 내에서 데이터의 원자 청크를 고유하게 식별 할 수 있음)가 포함되어야합니다. 다른 데이터 버킷은 해당 키를 참조하여 데이터 원자와 키가 가리키는 원자 사이에 링크를 만들 수 있습니다.

비 관계형 데이터베이스는 서로 다른 버킷의 데이터를 서로 연결하는 명시적이고 구조화 된 메커니즘없이 데이터를 저장합니다.

이러한 체계를 구현하는 것과 관련하여 색인이있는 종이 파일이 있고 다른 종이 파일에서 색인을 참조하여 관련 정보를 얻는다면 관계형 데이터베이스를 구현 한 것입니다. 따라서 컴퓨터가 필요하지 않다는 것을 알 수 있습니다 (물론 도움을 줄 사람이 없으면 매우 빠르게 지루해질 수 있음). RDBMS는 작업에 적합한 도구이지만 RDBMS는 필요하지 않습니다. 즉, 다양한 도구가 수행 할 수있는 작업에는 차이가 있으므로 작업에 적합한 도구를 선택하는 것이 그렇게 간단하지 않을 수 있습니다.

나는 이것이 평신도 용어로 충분하고 이해에 도움이되기를 바랍니다.


당신이 "아는"것의 대부분은 잘못되었습니다.

우선, 몇몇 관계 전문가들이 일상적으로 (때로는 분명하게) 지적했듯이 SQL은 많은 사람들이 생각하는 것만 큼 관계 이론과 거의 일치하지 않습니다. 둘째, "NoSQL"항목의 대부분의 차이점은 관계형인지 여부와는 상대적으로 거의 관련이 없습니다. 마지막으로 "NoSQL"이 SQL과 어떻게 다른지 말하기는 매우 어렵습니다. 둘 다 매우 광범위한 가능성을 나타 내기 때문 입니다.

신뢰할 수있는 한 가지 주요 차이점은 SQL을 지원하는 거의 모든 것이 데이터베이스 자체의 트리거와 같은 것을 지원한다는 것입니다. 즉, 데이터가 항상 내부적으로 일관성이 있도록 규칙을 데이터베이스에 적절하게 설계 할 수 있습니다. 예를 들어 데이터베이스에서 사람 주소가 있습니다. 그렇게하면 사람을 추가 할 때마다 기본적으로 그 사람을 주소와 연결해야합니다. 새 주소를 추가하거나 기존 주소와 연결할 수 있지만 어떤 식 으로든 사람은 주소를 가지고 있어야합니다. 마찬가지로 주소를 삭제하면 현재 해당 주소에있는 모든 사람을 삭제하거나 서로를 다른 주소와 연결해야합니다. 모든 사람에게는 어머니가 있어야하고, 모든 사무실에는 전화 번호가 있어야한다고 말하는 것과 같이 다른 관계에서도 똑같이 할 수 있습니다.

사물의 이러한 종류는 또한 데이터베이스에서 다른 사람의 외모는 사람을 추가하는 정도로하면, 그들은 하나 전혀 사람을 볼 것이다, 그렇지 않으면 그들은 사람이 볼 수, 원자 일이 보장되는 주 을 주소 (또는 어머니 등)

대부분의 NoSQL 데이터베이스는 적절한 데이터베이스에 이러한 종류의 적용을 제공 하지 않습니다 . 데이터베이스를 사용하는 코드에서 데이터에 필요한 관계를 적용하는 것은 사용자에게 달려 있습니다. 대부분의 경우 부분적으로 만 정확한 데이터를 볼 수도 있습니다. 따라서 모든 사람이 부모와 연결되어야하는 가계도를 가지고 있어도 어떤 제약을 가해도 실제로는 그렇지 않을 수 있습니다. 시행. 어떤 사람들은 당신이 마음대로 그렇게 할 수 있습니다. 다른 사람들은 그것이 얼마나 오래 지속될 수 있는지에 대해 의문을 가질 수 있지만 일시적으로 만 발생한다고 보장합니다.


관계형 데이터베이스는 데이터를 처리하기 위해 공식적인 술어 시스템을 사용합니다. 기본 물리적 구현은 실체가 없으며 특정 작업에 대해 최적화하기 위해 다양 할 수 있지만 항상 관계형 모델을 가정해야합니다 . 평신도의 용어로, 그것은 단지 내 테이블 (관계)의 각 행 (튜플)이 얼마나 많은 값 (속성)을 가지고 있는지 정확히 알고 있으며 이제 그 사실을 철저히 활용하고 극단적입니다. 그것이 짐승 진정한 본질입니다. 

우리는 분명히 관계형 육성을 가진 세대이기 때문에 관계형 모델의 관점에서 NoSQL 데이터베이스 모델을 다시 보면 평신도의 관점에서 보면 첫 번째 분명한 차이점은 행이 할 수있는 값의 수에 대한 가정이 없다는 것입니다. 이제까지 포함합니다. 이것은 문제를 실제로 지나치게 단순화하고 모든 NoSQL 데이터베이스의 물리적 모델의 복잡성에 명확하게 적용되지는 않지만 관계형 모델의 정점이며 우리가 남겨야하는 첫 번째 가정 또는 원하는 경우 가장 큰 가정입니다. 도약해야합니다.

우리는 모든 DBMS에 대해 사실 인 두 가지에 동의 할 수 있습니다. 모든 종류의 데이터를 저장할 수 있으며 상상할 수있는 방식으로 데이터를 관리 할 수 ​​있도록 충분한 수학적 토대가 있습니다. 현실은 두 가지 점 중 하나를 테스트에 넣는 실수를 결코하고 싶지 않고 실제 DBMS가 실제로 만들어 졌던 목적을 고수하는 것입니다. 평신도의 용어로 : 내면의 짐승을 존중하십시오!

(분명히 관계형 모델을 중심으로하는 잘 설립 된 표준을 NoSQL 데이터베이스에서 제공하는 다양한 특징과 비교하는 것을 피했습니다. 원할 경우 NoSQL 데이터베이스를 완전하지 않은 DBMS의 포괄적 용어로 고려하십시오. 다른 모든 것을 제외하고 관계형 모델을 가정하십시오. 차이점은 너무 많지만 이것이 주요 차이점이며 두 가지를 이해하는 데 가장 유용 할 것이라고 생각합니다.)


약간의 기술을 언급하는 수준에서이 질문을 설명해보세요.

비교를 위해 MongoDB와 Traditional SQL을 사용하고 Twitter에 트윗을 게시하는 시나리오를 상상해보십시오. 이 트윗에는 9 개의 사진이 포함되어 있습니다. 이 트윗과 해당 사진을 어떻게 저장합니까?

전통적인 관계 SQL의 경우 트윗과 사진을 별도의 테이블에 저장하고 새 테이블을 구축하여 연결을 나타낼 수 있습니다.

또한 이미지 유형 인 필드를 설정하고 9 개의 그림을 이진 문서로 압축하여이 필드에 저장할 수 있습니다.

MongoDB를 사용하면 다음과 같은 문서를 작성할 수 있습니다 (관계형 SQL의 테이블 개념과 유사).

{

"id":"XXX",

"user":"XXX",

"date":"xxxx-xx-xx",

"content":{

"text":"XXXX",

"picture":["p1.png","p2.png","p3.png"]

}

따라서 제 생각에 가장 큰 차이점은 데이터를 저장하는 방법과 데이터 간의 관계에 대한 저장 수준입니다.

이 예에서 데이터는 트윗과 사진입니다. 그들 사이의 관계의 저장 수준에 대한 다른 메커니즘도 둘 사이의 차이에서 중요한 역할을합니다.

이 작은 예제가 SQL과 NoSQL (ACID 및 BASE)의 차이점을 보여주는 데 도움이되기를 바랍니다.

Here's a link of picture about the goals of NoSQL from the Internet:

http://icamchuwordpress-wordpress.stor.sinaapp.com/uploads/2015/01/dbc795f6f262e9d01fa0ab9b323b2dd1_b.png


The difference between relational and non-relational is exactly that. The relational database architecture provides with constraints objects such as primary keys, foreign keys, etc that allows one to tie two or more tables in a relation. This is good so that we normalize our tables which is to say split information about what the database represents into many different tables, once can keep the integrity of the data.

For example, say you have a series of table that houses information about an employee. You could not delete a record from a table without deleting all the records that pertain to such record from the other tables. In this way you implement data integrity. The non-relational database doesn't provide this constraints constructs that will allow you to implement data integrity.

Unless you don't implement this constraint in the front end application that is utilized to populate the databases' tables, you are implementing a mess that can be compared with the wild west.


In layman terms it's strongly structured vs unstructured, which implies that you have different degrees of adaptability for your DB. Differences arise in indexation particularly as you need to ensure that a certain reference index can link to a another item -> this a relation. The more strict structure of relational DB comes from this requirement.

To note that NosDB apaprently provides both relational and non relational DBs and a way to query both http://www.alachisoft.com/nosdb/sql-cheat-sheet.html

참고URL : https://stackoverflow.com/questions/4811744/what-is-the-difference-between-a-relational-and-non-relational-database

반응형