VMDS

VMDS

VMDSGE EnergySmallworld 기술 플랫폼의 일부로 제공하는 Version Managed Data Store라는 관계형 데이터베이스 기술을 축약하며, 전력 분배 및 통신과 같은 엔터프라이즈 유틸리티 기업이 일반적으로 사용하는 매우 복잡한 공간 및 위상적 네트워크를 저장 및 분석하기 위해 처음부터 설계되었다.null

VMDS는 몇 년 동안 개선되고 업데이트되어 1990년에 처음 도입되었다.현재 버전 6.0이다.

VMDS는 공간 데이터베이스로 설계되어 왔다.이는 기존 속성만 관계형 데이터베이스와 비교할 때 VMDS에 여러 가지 고유한 특성을 제공한다.null

분산 서버 처리

VMDS는 Smallworld Master File Server(SWMFS: Smallworld Master File Server)라는 단순하고 확장성이 뛰어난 데이터 블록 서버와 CMagik로 작성된 지능형 클라이언트 API의 두 부분으로 구성되어 있다.공간 및 속성 데이터는 서버의 데이터 저장소 파일이라고 하는 특수 파일에 상주하는 데이터 블록에 저장된다.클라이언트 애플리케이션이 데이터를 요청할 때 필요한 최적의 데이터 블록 집합을 알아낼 수 있는 충분한 지능을 가지고 있다.그런 다음 이 요청은 처리를 위해 네트워크를 통해 클라이언트로 데이터를 반환하는 SWMFS에 이루어진다.null

이러한 접근방식은 더 큰 볼륨에서 흐르는 경향이 있고 일반 속성 데이터보다 더 많은 처리가 필요한 공간 및 위상학적 데이터를 다룰 때 특히 효율적이고 확장 가능하다(예: 지도 다시 그리기 작업 중).이러한 접근 방식을 통해 VMDS는 수백 또는 수천 개의 동시 클라이언트를 포함할 수 있는 엔터프라이즈 구축에 적합하게 된다.null

장기 트랜잭션 지원

관계형 데이터베이스는 데이터에 대한 변경이 상대적으로 작고 기간(거래 시작과 종료 사이의 최대 기간은 일반적으로 몇 초 이하)으로 짧은 짧은 트랜잭션을 지원한다.null

VMDS는 트랜잭션에 포함된 데이터의 양이 상당할 수 있고 트랜잭션 기간이 상당할 수 있는 긴 트랜잭션(일, 주 또는 월)을 지원한다.이러한 유형의 거래는 예를 들어 배전 유틸리티가 사용하는 고급 네트워크 애플리케이션에서 흔히 발생한다.null

이 맥락에서 긴 거래의 시간 범위 때문에, 변경의 양은 (거래의 범위 내에서뿐만 아니라, 데이터베이스 전체의 맥락 안에서) 상당할 수 있다.이에 따라 같은 기록이 두 번 이상 바뀔 가능성도 있다.이 시나리오에 대처하기 위해 VMDS는 이러한 충돌을 자동으로 관리하기 위한 내장형 지원을 가지고 있으며 애플리케이션은 변경 사항을 검토하고 올바른 편집만 수락할 수 있다.null

공간 및 위상학적 기능

VMDS는 속성 쿼리, 조인 필드, 트리거 및 계산된 필드와 같은 기존의 관계형 데이터베이스 기능뿐만 아니라 수많은 공간 및 위상학적 기능을 가지고 있다.이를 통해 포인트, 텍스트, 폴리선, 폴리곤, 래스터 데이터와 같은 공간 데이터를 저장하고 분석할 수 있다.null

공간 함수는 다음과 같다: 다각형 내에서 모든 형상을 찾고, 사이트 세트의 Voronoi 폴리곤을 계산하고, 점 세트에 대해 군집 분석을 수행한다.null

점, 폴리선, 폴리곤과 같은 벡터 공간 데이터에는 복잡한 네트워크를 모델링할 수 있는 위상학적 속성이 부여될 수 있다.네트워크 분석 엔진은 두 노드 사이의 최단 경로 찾기 또는 전달 경로 최적화 방법(이동 중인 세일즈맨 문제)과 같은 질문에 대답할 수 있도록 제공된다.위상 엔진은 새로운 데이터가 추가되거나 기존 데이터가 편집될 때 위상학적 실체가 상호 작용하는 방식을 정의하는 규칙 집합으로 구성할 수 있다.null

데이터 추상화

VMDS에서 모든 데이터는 애플리케이션에 개체로 제공된다.이것은 JDBC라는 단어를 사용하여 테이블 또는 쿼리 결과의 행으로 데이터를 표시하는 많은 관계형 데이터베이스와는 다르다.VMDS는 관리자가 데이터베이스의 테이블을 Magik 예시(또는 클래스)와 연결할 수 있는 데이터 모델링 툴 및 기본 인프라를 Smallworld 기술 플랫폼의 일부로 제공한다.Magik get 및 설정 방법은 테이블의 필드(또는 컬럼)를 노출시키는 Magik 겟 및 설정 방법이 자동으로 생성될 수 있다.각 VMDS 은 애플리케이션에 Magik 개체의 인스턴스로 표시되며 RWO(또는 실제 개체)로 알려져 있다.테이블은 스몰월드어로 컬렉션으로 알려져 있다.null

# all_operos는 데이터베이스의 모든 행을 보유하며 이기종 all_operos <<my_application.rwo_setculation # valve_properties >< all_operos.select(:message, {:message}) number_of_valve.size를 보유한다.

질의는 술어 객체를 사용하여 작성된다.

# '열린' 밸브를 찾는다.밸브를 열다선택(copycate.eq(:operating_status, "open") number_of_open_open_properties << open_limit.size>
_over open_open_properties.property write(valve.id)_endloop

조인은 상위 RWO에 대한 방법으로 구현된다.예를 들어, 관리자에게 다음과 같이 보고하는 직원이 여러 명 있을 수 있다.

# 직원 수금.직원< my_application.properties.properties(:gis, :properties)
# '스티브'라는 매니저를 찾아 첫 매칭 요소 스티브 << 종업원을 구한다.선택(predicate.eq(:name, "Steve") 및 (predicate.eq(:role, "manager")).an_element()
# 직접 보고의 이름을 표시한다.name(이름)은 직원 모음(또는 테이블)의 필드 #(또는 열) _operative over steve.direct_direct.properties.property write(employee.name)_endloop

트랜잭션 수행:

# 해시 테이블의 각 키는 #의 필드(또는 열)에 해당하는 집합(또는 테이블) valve_data << hash_table)에 해당한다.new_with( :asset_id, 57648576, :재료, "철")
# 밸브 컬렉션 직접 valve_property << my_application.properties.properties(:gis, :properties)
# 삽입 트랜잭션을 생성하여 새로운 밸브 레코드를 컬렉션에 삽입한다. # 코멘트가 제공될 수 있는 새로운 밸브 레코드를 트랜잭션 트랜잭션 << record_transaction.new_insert (valve_collection, valve_data, "inserted a new valve") transaction.run()

참고 항목