2011-04-23 4 views
1

나는 차이점에 대해 일반적인 느낌을 가지고 있지만 데이터베이스가 글로벌 상태와 다른 점을 정확하게 지적 할 수는 없습니다.데이터베이스가 글로벌 상태의 한 형태로 간주되지 않는 이유는 무엇입니까?

"전역 상태"에 대한 순진한 정의로 데이터베이스는 일반적으로 최소한 응용 프로그램 전역입니다. 중간 실행중인 데이터베이스를 변경하는 앱을 가질 수도 있지만 일반적으로 전역 적으로 사용됩니다.

상태에 대해서는 데이터베이스에 상태가 포함되어 있다고 주장 할 필요가 없다고 생각합니다.

그렇다면 데이터베이스가 "불량"종류의 전역 상태와 다른 점은 무엇입니까?

이 질문은 객체가 부모에 대해 알아야하는 곳을 강하게 연결하지 않으려 고하기 때문에 나타났습니다.

예를 들어, 전략 게임을하고 있고 유닛 중 하나가 적 유닛에 데미지를 입히면 해당 유닛의 소유자가 x 금을 잃는 곳에서 x가 데미지의 양을 나타냅니다.

글쎄, 정상적인 상황에서, 한 유닛은 자신이 누구인지 알 필요가 없습니다. 소유자는 유닛을 제어하는 ​​소유자이기 때문에 소유자는 유닛에 명령을 내리고 그 일을합니다.

그러나 외부 요인으로 인해 장치의 소유자를 알아야 할 필요가 있습니다. 이 경우, 공격 유닛은 자신이 공격하는 유닛을 알고 있습니다. 그러나 이제 유닛을 공격하는 것 외에도 주인이 5 골드를 잃게하기 위해서는 소유자를 더 알아야합니다.

원래 의도 한 것보다 더 많은 차이가 있었지만, 게임의 상태가 관계형 데이터베이스에 저장되어있는 경우 누가 직접적으로 누가 그 점을 알 필요가없는 대상 소유자를 쿼리하는 것이 쉽습니다 그들의 주인은이었다. 그러한 데이터베이스가 객체라면, 나는 그 데이터베이스를 모든 것의 전체 상태를 알고, 또한 변경 가능하다는 의미에서 신 개체라고 부릅니다.

그렇다면 데이터베이스가 전역 상태와 다른 점은 무엇입니까?

답변

1

"왜 운영 체제가 글로벌 상태의 형태로 간주되지 않습니까?"라고 똑같이 물을 수 있습니다. 나는 당신이 그것을보고 싶어하는 방법에 따라 추측한다. 하지만 누가 신경 쓰냐? 라이브러리 코드에서 전역 변수와 같이 많은 문제를 일으키는 것은 글로벌 상태가 아닙니다. 데이터베이스와 운영 체제 모두 다양한 프로그램을위한 기술을 가능하게합니다. 데이터베이스가 단위 테스트를 더 어렵게 만들 수 있고 (힌트 : 모의 시도) 다양한 운영 체제로 인해 모든 사람이 똑같이 잘 사용할 수있는 프로그램을 만드는 것이 어려워 질 수 있습니다.

다른 방법으로는 대부분의 코드에서 전역 상태에 대한 유효한 대안이 있지만 반면 데이터베이스를 사용하는 대안은 종종 데이터베이스라고 부르지 않고 자신의 코드로 데이터베이스를 효과적으로 구현하는 것입니다.).

+0

필자는 "그렇습니다. 글로벌 상태이지만 그것이 만드는 것보다 더 많은 문제를 해결하는 잘 심사숙고 한 양식"이라고 말하면서 올바른 표현일까요? – Davy8

+0

나는 청중과 당신의 목적에 따라 다르다고 생각합니다. –

2

다른 점은 이 공유 된 전역 상태 리소스로 설계되었다는 점입니다.

RDBMS는 ACID을 구현하며 다른 대부분의 전역 상태에서는 그렇지 않습니다.

+0

아 흥미 롭습니다. 그렇다면 대부분의 전지구 국가에서 ACID 규정 준수가 부족하다는 주장을 제기 하시겠습니까? 아니면 너무 강한 주장입니까? – Davy8

+0

@ Davy8 - 너무 강한 주장입니다. 대부분의 글로벌 상태의 문제점은 제대로 관리되지 않는다는 것입니다. – Oded

0

dbms는 프로그래밍 언어에 관계없이 여러 응용 프로그램에 대한 동시 액세스, 보안, 데이터 무결성 및 논리적 및 물리적 데이터 독립성을 관리합니다. 대부분은 개별 프로그래머에게 알려지지 않았을 수 있습니다.그리고 그것은 모든 것을 일반적으로 절차적인 방식이 아니라 단순한 선언적 방식으로합니다.

필자가 근무한 마지막 Fortune 500에서 적어도 25 개 언어로 작성된 프로그램이 운영 데이터베이스에 부딪혔다. ('a'에서 't', 어셈블러에서 TCL로. u부터 z까지의 모든 언어를 기억하지는 못합니다. 일부 프로그램은 첫 번째 릴리스가있었습니다. 1970 년대 초반.