Versant Object 데이터베이스

Versant Object Database
Versant Object 데이터베이스
Logo
개발자베르산트 코퍼레이션
안정적 해제
9[1].3 / 2017년 4월 12일(2017-04-12)
기록 위치Java, C, C#, C++, Smalltalk, Python
운영 체제크로스 플랫폼 Solaris, Linux, Windows(NT thro Vista), AIX, HP-UX(모든 플랫폼의 경우 32비트 및 64비트 모두)
유형오브젝트
면허증모든 권리 보유.
웹사이트www.versant.com

VOD(Versant Object Database)는 Versant Corporation이 개발한 객체 데이터베이스 소프트웨어 제품이다.

Versant Object Database는 객체 지향 언어를 사용하는 개발자가 각 언어가 데이터베이스의 데이터 정의 언어(DDL) 역할을 할 수 있도록 허용함으로써 자신의 정보를 거래적으로 저장할 수 있도록 한다.즉, 메모리 모델데이터베이스 스키마 모델이다.[2]

일반적으로 VOD의 지속성은 클래스 목록을 선언하고, 그 다음 사례 사용을 위한 거래 구분 애플리케이션 프로그래밍 인터페이스를 제공하여 구현된다.각각의 언어 통합은 통사당 및 지시당을 포함하여 해당 언어의 구성을 준수한다.

추가 API는 단순한 트랜잭션 경계를 넘어 대용량 데이터, 많은 동시 사용자, 네트워크 지연 시간, 디스크 병목 현상 등을 가진 시스템에 대해 성능 최적화 및 확장성을 다룰 때 발견되는 실제 문제를 해결하는 데 필요한 보다 고급 기능을 제공한다.

베르산트 코퍼레이션

베르산트 코퍼레이션
유형자회사
산업소프트웨어
설립됨1988
본부,
미국
상품들오브젝트
수익Increase2,5300만 달러(2008)[3]
부모액티언

Versant Corporation은 미국 기반의 소프트웨어 회사로서 NoSQL 데이터 관리 시스템을 전문으로 구축하였다.버선트 제품은 통신, 국방, 생명과학, 바이오의학, 교통, 금융, 온라인 게임 등 산업 분야에 배치된다.베르산트는 1988년 캘리포니아 멘로 파크에서 설립되었다.캘리포니아 레드우드 시에 본사를 두고 있었다.공학팀은 독일 함부르크와 레드우드 시에 위치해 있었다.

역사

이 회사는 1988년 8월 키 옹 박사에 의해 "객체과학 주식회사"로 설립되었다.옹은 이전에 오픈소스 관계형 데이터베이스 관리 시스템 잉그레스와 함께 일했다.이 무렵 객체지향 프로그래밍(OO)이 인기를 끌게 되었고, 이 회사는 위스콘신[4] 대학에서 행한 연구를 상업 데이터베이스 시스템에 활용하여 OO언어를 보완하였다.이 회사의 초기 경영진에는 마이클 시솔스(최고경영자), 키오 옹 박사(CTO), 존 휴스(VP, 세일즈), 메리 루미스 박사(VP, 서비스), 수잔 디커슨(VP, 비즈니스 개발) 등이 포함됐다.

1990년 초에 그 회사는 "Versant Object Technology"로 개명되었다.1993년 4월 데이비드 뱅크스가 CEO로 취임했다.[5]1996년 7월 18일 베르산트는 나스닥 증권거래소에서 기업공개(IPO)를 하였고, VSNT라는 기호로 거래되었다.[6]이 회사는 기업공개(IPO)로 1490만 달러를 모금했으며, 당시 캘리포니아멘로파크에 본사를 두고 있었으나 1997년 캘리포니아 프레몬트로 이전했다.[6]1998년 1월, 닉 오든이 뱅크스의 뒤를 이어 CEO로 취임하였고,[7] 1998년 7월 15일 회사는 다시 베르산트 사로 개명되었다.[8]

2004년 3월 베르산트는 프랑크푸르트 증권거래소에서 거래하던 윈도 제품 시장을 겨냥한 유럽 중심 기업인 시어 소프트웨어 GmbH를 인수했다.2005년에는 시인 소프트웨어의 사장인 조센 위테가 베르산트 사의 CEO로 취임했다.2005년 8월 보통주는 10대 1의 역주 분할이 있었다.2008년 12월 1일 Versant는 Subo Software, Inc.의 데이터베이스 소프트웨어 사업 자산(이전의 명칭은 db4objects, Inc.)을 인수하였다.오픈소스 임베디드 데이터베이스 기술 db4o를 개발했다.[3][8]

Versant의 원래 구현은 C, C++Smalltalk 사용자를 대상으로 했다.1995년에 Versant는 Java 프로그래밍 언어에 대한 지원을 도입했고 그 후 2009년에 C# 에 대한 지원을 도입했다.NET 플랫폼.2012년 Versant는 Apache Hadoop 지원을 포함한 분석 제품의 기술적 미리보기와 함께 Java Persistence API 2.0 호환 인터페이스인 Versant JPA를 도입했다.

2012년 말, 유니콤 시스템즈사의 제안을 거절한 후, Versant Corporation은 잉그레스의 상업적 개발자인 Actian Corporation과 관계형 데이터베이스인 Vectorwise에 인수될 것이라고 발표했다.이번 인수는 마케팅 용어 빅데이터를 활용해 추진됐다.[9]그것은 약 3,700만 달러에 12월에 문을 닫았다.[10]

상품들

Versant Object Database 외에, Versant는 두 개의 다른 상용 객체 지향 데이터베이스 관리 시스템(OODBMS), "Versant JPA" 및 "Versant FastObjects"를 판매했다.게다가, Versant는 오픈 소스 데이터베이스 "db4o"를 제공한다.

  • Versant JPA는 Hadoop 지원을 포함한 분석 플랫폼의 기술적 미리보기가 포함된 객체 데이터베이스용 JPA 2.0 호환 인터페이스다.[11]윈도우즈리눅스 운영 체제와 함께 사용할 수 있는 서버 및 SDK로 제공된다.
  • "Versant FastObjects"는 를 위한 관계형 데이터베이스에 대한 개발자 친화적이고 객체 지향적인 대안이다.NET 지속성.[12]
  • "db4o"는 Java 및 를 위한 오픈 소스 내장 객체 데이터베이스 입니다.NET. db4o는 자바에서 코드화되어 있으며 샤펜이라는 오픈 소스 도구에 의해 C#로 번역된다.[13]

적용들

Versant는 복잡한 데이터 모델용 제품, 대량의 데이터 및 다수의 동시 사용자를 위한 제품을 판매했다.Versant는 세계 최대 증권 거래소를 위한 글로벌 거래 플랫폼, 세계 최대 통신사를 위한 네트워크 관리, 국방 기관을 위한 지능 분석, 최대 항공사/호텔 기업을 위한 예약 시스템, 리스크 맨 등의 산업 내 애플리케이션에서 발견된다.은행 및 교통 기관을 위한 연령 분석, 대규모 멀티 플레이어 게임 시스템, 네트워크 보안 및 부정 행위 탐지, 지역 번호 이동성, 고급 시뮬레이션, 소셜 네트워킹

특징 하이라이트

지원되는 언어

지원되는 주요 언어는 Java, C# 및 C++이다.Versant는 또한 SmalltalkPython에 대한 언어 지원을 가지고 있다.

시스템 쿼리

VOD는 서버측 인덱싱 및 쿼리 실행 엔진을 통해 쿼리를 지원한다.쿼리 지원에는 Versant 특정 언어 구문과 표준 기반 쿼리 언어 구문이 모두 포함된다.Versant는 개발자가 선택한 언어 바인딩에 따라 이 쿼리 기능을 여러 형태로 제공한다.예를 들어, Java VOD에서는 VQL(Verant Query Language), JDOQL, EJB QLOQL을 제공한다.C++ Versant에서는 VQL과 OQL을 제공하며, VQL, OQL 및 LINQ에 대한 C# 지원을 통해 VOD는 사용 가능한 속성 인덱스를 기반으로 쿼리 실행을 최적화한다.Versant는 또한 ODBC/JDBC 드라이버를 사용하는 Versant 데이터베이스에 대한 표준 SQL 쿼리를 지원한다.

버선트 쿼리 언어

네이티브 VQL(Versant Query Language)은 SQL92와 유사하며, 파라미터화된 런타임 바인딩을 허용하는 문자열 기반 구현이다.차이점은 테이블과 열을 대상으로 하는 대신 클래스와 속성을 대상으로 한다는 점이다.

쿼리 처리에 다른 객체 지향 요소가 적용된다.예를 들어, 슈퍼 클래스를 대상으로 하는 쿼리는 쿼리 술어를 만족시키는 구체적인 하위 클래스의 모든 인스턴스를 반환한다.VOD는 분산형 데이터베이스로서 논리적 데이터베이스는 많은 물리적 데이터베이스 노드로 구성될 수 있으며 쿼리는 병렬로 수행된다.

다양한 쿼리 지원에는 패턴 일치, 조인, 세트 연산자, 순서별, 존재, 고유, 투영, 숫자 표현식, 색인, 커서 등을 포함한 관계형 쿼리 언어에서 발견되는 대부분의 핵심 개념이 포함된다.

인덱싱

VOD는 대규모 컬렉션에서 인덱스를 지원한다.그러나 사용 가능한 인덱스를 가진 쿼리 가능한 객체를 가지기 위해 컬렉션을 가질 필요는 없다.다른 OODB 구현과는 달리, Versant 데이터베이스의 모든 오브젝트는 색인이 가능하고 쿼리를 통해 액세스할 수 있다.인덱스는 클래스의 속성에 배치될 수 있으며, 그런 클래스는 쿼리 작업의 대상이 될 수 있다.인덱스는 해시, b-트리, 고유, 복합, 가상이 될 수 있으며 유틸리티, 그래픽 사용자 인터페이스 또는 API 호출을 통해 온라인으로 생성할 수 있다.

대규모 수집 지원

VOD는 특별한 노드 기반 구현을 사용하는 대규모 컬렉션에 대한 페이지 지정 지원을 제공한다.이러한 컬렉션은 전체 컬렉션을 로드하지 않고 클라이언트가 필요로 하는 노드만 메모리로 불러올 수 있도록 액세스가 이루어지는 방식으로 설계된다.

이러한 대규모 컬렉션은 다른 영구 컬렉션 클래스처럼 만들어지고 운영된다.인터페이스는 또한 적절한 언어 구성과 일치한다.예를 들어 C++ Standard Template Library, Java Iterator, C# 열거형 등이 있다.

기본적으로 개체 모음은 개체 식별자의 집합일 뿐이다.그래서, 이것들은 매우 클 수 있지만, 작은 거주자 기억 발자국을 가지고 있다.수집을 반복하기 위해 객체는 구성 가능한 배치 모드에서 또는 한 번에 하나씩 클라이언트 메모리 공간으로 참조되지 않는다.수집에 대한 쿼리는 수집을 클라이언트 메모리 공간에 로드하지 않고 "in" 연산자(또는 subset_of, superset_of 등과 같은 다른 집합 기반 연산자)를 사용하여 수행할 수 있다.

데이터 복제

VOD에는 복제의 동기에 따라 달라지는 몇 가지 복제 메커니즘이 있다.그것은 고가용성을 위한 것이거나 분배 또는 통합을 위한 것이다.

고가용성

Versant는 동기식 쌍 복제를 한다.내결함성을 위한 전체 복제는 버디 노드 이름을 지정하는 하나의 구성 파일만 설치하면 된다.새 연결은 복제본 파일의 존재를 인식하며 연결 시 해당 파일에 버디 쌍이 있는지 확인한 후 있는 경우 두 버디에 연결하십시오.이것은 많은 버디 쌍이 있도록 분산된 데이터베이스일 수 있다.그러면 모든 트랜잭션 변경은 버디 데이터베이스 서버 프로세스에 동시에 커밋된다.

버디 쌍의 데이터베이스 중 하나에 연결할 수 없는 경우, 실행 중인 트랜잭션을 처리하여 커밋 실패가 발생하지 않도록 하며, 대신 노드 장애에 대한 실행 중인 트랜잭션은 버디 쌍에 아직 살아있는 노드로 계속 처리한다.노드가 아직 살아 있고 트랜잭션을 처리하는 기계에서, 손상된 데이터베이스가 다시 액세스할 수 있도록 모니터링하는 새로운 프로세스가 시작될 것이다.이전에 실패한 노드가 활성화되면 모니터링 프로세스는 두 버디를 다시 전체 동기화 상태로 되돌리지 못한 이후 발생한 모든 변경 사항을 복제하기 시작한다.완전히 동기화되면 플래그가 설정되고 다음 트랜잭션에서 클라이언트는 다시 전체 동기 작동으로 이동한다.이 모든 것은 사용자 개입 없이 처리된다.

디스크 드라이브 고장 등과 같은 심각한 장애의 경우, 복제된 노드를 라이브 노드의 온라인 백업에서 재생성할 수 있다.새 디스크 드라이브 설치, 라이브 노드의 온라인 백업, 실패한 시스템에서 복원, 모니터를 시작하여 마지막 몇 개의 트랜잭션을 동기화하고 클라이언트에서 전체 복제를 복원하십시오.

분배

배포는 VAR(Versant Asynchronous Replication)을 사용하여 처리되며, VAR은 규칙 기반 충돌 감지 및 해결 기능이 있는 채널 기반 마스터 슬레이브 또는 피어 투 피어 복제 프레임워크를 사용한다.

관리자는 유틸리티를 사용하여 복제 채널을 정의한다.채널은 물리적 노드 내에서 복제 범위를 정의하는 엔티티로 명명된다."범위"는 전체 데이터베이스 복제에서 Versant 쿼리에 의해 정의될 수 있는 것과 같은 미세한 어떤 것에 이르기까지 모든 것이 될 수 있다.일단 채널이 정의되면, 애플리케이션은 이들 채널에서 청취자로 등록할 수 있으며, 그 시점에서 해당 채널로부터의 변화가 각 클라이언트로 흐르기 시작한다.

이 채널들은 지속성과 신뢰할 수 있는 메시지를 제공한다.등록된 청취자와 채널 사이에 연결이 끊긴 경우, 연결이 다시 설정되면 지속적인 변경이 보장된다.신뢰성이 높은 LAN 네트워크의 최적화나 신뢰성이 낮은 WAN 유형의 환경에서는 높은 신뢰성을 위해 구성할 수 있는 다중 전송 프로토콜이 있다.

양방향 채널 복제에서는 채널 활동을 방해하지 않고 런타임에 충돌하는 변경을 해결할 수 있도록 일련의 충돌 감지 규칙을 시행한다.다른 형태의 데이터 배포가 있다.

통합

보통 통합에는 일종의 맞춤 코드가 필요하다.사용자는 ORM 제품을 사용하여 관계형 데이터베이스와 Versant 데이터베이스에 모두 연결할 수 있다.관계형 데이터베이스나 Versant에서 개체를 로드한 다음, 일부 사소한 코드 구현을 통해 해당 개체를 소스에서 분리하고 대상에 기록할 수 있다.이것은 다른 데이터베이스 시스템과의 통합을 위한 일괄 처리 모드에서 수출입에 사용될 수 있다.

데이터 배포 아키텍처

VOD는 여러 개의 연결된 데이터베이스에 걸쳐 분산된 2상 커밋 프로토콜을 사용하여 분산 데이터 처리를 처리한다.이 과정에서 VOD는 분산 트랜잭션을 처리하는 내부 리소스 관리자를 사용한다.Versant는 또한 외부 트랜잭션 모니터가 트랜잭션 컨텍스트를 제어할 수 있도록 XA 프로토콜을 지원하므로 예를 들어 CORBA 또는 J2EE 애플리케이션 서버에 플러그를 꽂는다.

Versant는 객체 관계가 물리적 리소스(데이터베이스) 노드로 확장되도록 허용한다.다른 데이터베이스에 상주하는 개체 그래프에서 참조되는 공유 정보 및 해당 정보의 해상도는 런타임에 투명하다.예를 들어, 몇몇 물리적 데이터베이스는 거래와 같은 계정 활동에 대해 집계된 계정 번호에 의해 분할된 사용자 정보 모델을 보유하고 실제 거래 모델을 보유한 데이터베이스를 몇 개 더 보유할 수 있으며 이러한 사용자와 거래는 관련될 수 있다.모든 사용자 데이터베이스에 걸친 질의와 사용자(또는 사용자 집합)를 반환한 다음, 거래가 포함된 사용자 객체에 메시지가 전송되면, 유통 전체에 걸쳐 트레이드 모델이 자동으로 해결된다.이러한 객체 중 하나를 업데이트한 후, 커밋 시 Versant는 완전한 AID 2상 커밋 프로세스에서 모든 변경 사항이 각각의 물리적 노드에 다시 커밋되도록 보장할 것이다.

개체 ID는 모든 물리적 노드에서 고유하도록 보장된다.개체는 애플리케이션 코드 변경 없이 물리적 노드 간에 "이동"될 수 있다.

스키마 진화

스키마 진화는 애플리케이션의 클래스 모델의 정상적인 업데이트를 통해 처리되며, 그런 변경사항을 운영 데이터베이스에 적용한다.이러한 스키마 변경은 유틸리티나 API를 통해 기존 데이터베이스에 적용될 수 있다.그 결과는 데이터베이스 스키마의 버전이다.

데이터베이스의 기존 오브젝트는 최신 스키마 버전으로 느리게 진화한다.더럽게 만들어(업데이트용으로 표시) 데이터베이스에 다시 커밋되지 않는 한 실제로 어떤 개체도 진화하지 않는다.일반적으로 이것은 새로운 스키마를 가진 애플리케이션이 새로운 개체와 업데이트된 개체를 제외하고 진화를 일으키지 않는다는 것을 의미한다.

최신 버전에 맞춰 천천히 진화하는 데이터베이스 세트를 잡아 더럽게 표시하여 데이터베이스를 "크롤링"할 수 있는 유틸리티가 있다.이는 성능과 공간을 최적화해야 하는 임베디드 시스템이나 실시간 시스템에 필요할 때도 있다.

대부분의 경우, 오래된 클라이언트는 서버 업데이트와 함께 새로운 스키마로 패치 업데이트를 받는다.클라이언트 스키마 버전이 데이터베이스 서버와 동기화되는 경우.베르산트의 느슨한 스키마 매핑 기능도 사용할 수 있다.이는 클라이언트의 플래그에 의해 활성화되어 스키마 버전이 일치하지 않는다고 불평하지 않고 대신 이전 스키마와 일치하도록 수신 개체를 필터링한다.이 설비를 사용하려면 의도하지 않은 부작용을 피하기 위해 몇 가지 사전 검토가 필요하다.

그 과정은 다음과 같다.

  1. 클래스 정의가 업데이트됨(예: 새 하위 클래스 추가, 속성 추가, 속성 이름 변경, 속성 제거 등) 및 다시 컴파일.애플리케이션이 Versant 데이터베이스에 연결되면 스키마 버전 불일치가 감지되며 불일치를 방지하기 위한 조치를 취하지 않으면 일반적으로 오류가 발생한다.
  2. 스키마 불일치는 여러 가지 기법을 사용하여 피할 수 있다.
    1. 유틸리티는 데이터베이스에 새로운 스키마를 설명하는데 사용될 수 있다.유틸리티는 비호환성 목록을 표시하고 어떻게 해결할지 묻게 된다.당신의 행동은 당신이 개발 중인지, QA, 생산 중인지 등에 따라 달라질 것이다.상관없이 기존 클래스를 삭제하거나 스키마 버전을 발전시키고 모든 기존 개체를 유지하며 이름을 바꾸고 다시 입력하는 등의 작업도 가능하다.
    2. 진화 과정은 연결 옵션을 통해 자동화될 수 있다.이는 일반적으로 개발 모드에서 사용되며 스키마가 연결 시 불일치 사항을 자동으로 진화시키고 기존 객체를 계속 보존할 수 있도록 한다.
    3. 특정 API를 사용하여 데이터베이스 스키마를 동적으로 진화시킬 수 있다.이것은 Versant 런타임 클래스라고 불리는 고급 주제 입니다.기본적으로 데이터베이스에 대해 완전히 동적 스키마 구조를 생성하여 새로운 클래스와 속성을 즉시 생성할 수 있다.
  3. 이전 스키마를 가진 클라이언트가 데이터베이스에서 계속 작동할 경우, 애플리케이션 프로파일 파일의 loose_schema_mapping을 true로 설정해야 한다.
  4. 선택적으로, 유틸리티를 시작하여 데이터베이스를 탐색하고 모든 기존 인스턴스의 버전 마이그레이션을 강제할 수 있다.

스키마 진화에 대한 일반적인 지침은 다음과 같은 두 가지를 제외하고, 사용자 정의 진화 코드를 작성할 필요 없이 스키마 변경 및 기존 인스턴스 보존이 가능하다는 것이다.

  1. 상속 계층의 중간으로 변경.일련의 단계에서 이 작업을 수행하기 위해 사용자 지정 코드를 작성하지 않는 한 계층의 중간에 새 클래스를 삽입하는 것은 기존 개체를 잃지 않고서는 불가능하다.
  2. 배열과 같은 호환되지 않는 유형이 문자열로 변경됨

속성 이름 바꾸기, 리프 클래스 삭제, 리프 클래스 추가, 새로운 클래스 추가, 속성 추가 또는 제거 등과 같은 다른 모든 형태의 진화는 온라인과 사용자 지정 코드 없이 수행될 수 있다.새로 추가된 속성에 대해 비표준 기본값 설정과 같은 작업이 필요한 경우, 이는 개체 내의 콜백 기능에서 수행할 수 있다.캐시 부하와 같은 활동에서 호출되는 일련의 표준 객체 라이프사이클 콜백이 있다.이러한 콜백은 기본값을 확인하고 필요한 경우 조치를 취하는 데 사용될 수 있다.

영구 객체 수명 주기

객체 부하의 라이프사이클은 사용 사례에 근거하여 제어할 수 있다.

기본적으로 객체는 메시지를 보낼 때만 로드된다.여기에는 실제 개체가 아닌 쿼리 술어를 만족한 개체에만 참조 컬렉션을 반환하는 쿼리의 기본 동작이 포함된다.객체가 로드되면 모든 비기준 속성(기본값)도 로드되며 나머지 참조 유형은 참조 객체와 동일한 패턴을 따른다.

메시지가 개체로 전송될 때 VOD는 개체가 이미 클라이언트 메모리에 있는지 확인하기 위해 내부 구조를 조사한다.그렇지 않으면 VOS는 RPC를 사용하여 개체를 로드한다.VOD가 개체를 로드할 때 연결 잠금 전략도 검토하여 로드 시 물체를 잠그는 방법을 결정한다.VOD는 연결에 적용할 수 있는 글로벌 잠금 전략과 특정 사용 사례에 대한 동작을 재정의하기 위한 극도로 미세한 제어를 모두 지원한다.

일단 객체가 로드되고 잠기면, 객체는 다수의 이벤트 중 하나가 발생할 때까지 서버에 동등한 잠금으로 클라이언트 캐시에 유지된다.

가장 일반적인 이벤트인 현재 트랜잭션은 커밋으로 종료된다.디폴트 케이스의 경우, 이렇게 하면 메모리에서 자물쇠와 물체가 해제된다.그러나 캐시와 자물쇠를 유지하고 새 거래를 시작하고, 캐시를 유지하되, 자물쇠를 풀고 새 거래를 시작하는 것과 같은 결합을 수행하는 커밋 형태가 있다는 점에 유의하십시오.이러한 양식 등은 낙관적 잠금과 같은 기본이 아닌 잠금 전략을 사용할 때 또는 동일한 개체 집합에서 작업을 구성하고 작동하는 일련의 트랜잭션이 있을 때 캐시 효과를 최적화하는 데 사용된다.

또 다른 가능성은 클라이언트 캐시가 가득 차기 시작하는 것이다.이 경우 VOD는 서버 프로세스로 개체를 다시 교환하여 공간을 만들고 커밋 시 수행해야 할 작업을 수행하기로 결정할 수 있다.VOD는 완전한 트랜잭션 방식으로 이 작업을 수행하므로 수정된 객체가 서버로 스왑되더라도 트랜잭션을 롤백하면 여전히 실행 취소된다.또한 클라이언트 캐시에 객체를 "핀"하여 중요한 객체 집합의 스와핑을 방지함으로써 메모리 오류에 대한 우려 없이 직접 메모리 포인터를 사용할 수 있다.

또 다른 가능한 이벤트는 대상 클래스에 있는 개체의 캐시를 플러시하도록 설정된 옵션을 가진 쿼리 호출로, 현재 캐시에 있는 변경된 개체가 현재 쿼리 실행 평가의 일부가 되도록 하는 것이다.

다른 가능성에는 새로 고침이나 릴리스 통화와 같이 객체의 명시적인 해제를 초래하는 API 호출이 포함된다.

기본 동작을 재정의하는 방법은 여러 가지가 있다.그것들은 실제로 사용 사례에 근거한 성능 튜닝에 일반적으로 사용된다.예를 들어 1000개의 객체를 반복하려면 1000개의 RPC를 수행하지 마십시오.groupRead에 대한 호출에 대한 참조 컬렉션을 제공하는 것은 단일 RPC를 사용하고 모든 객체를 로드한다.마찬가지로 getClosure를 호출하여 groupRead 동작을 사용하여 모든 참조 객체를 시작점에서 지정된 도달성 수준으로 그래프에 로드할 수 있다.또한 쿼리는 참조만 설정하거나 커서를 사용하는 것이 아니라 잠금 및 로드 결과 세트를 설정할 수 있는 옵션이 있다.객체를 캐시에 명시적으로 로드하고 연결 기본값보다 높은 잠금 레벨을 설정하는 API 등이 있다.

지속성 달성

C++ 사용자의 경우, Versant는 상속 계층의 최상위 클래스가 데이터베이스 활동을 처리하는 기본 클래스 "POBject"에서 상속하도록 요구한다.

그리고 파일 설정이 있고,schema.imp모델에서 어떤 클래스를 영구적으로 만들 것인지 선언하고 해당 파일은 영구 클래스에 베르산트의 필수 마법이[clarification needed] 추가되는 컴파일 전 단계에서 사용된다.마지막으로, 그 결과schema.cxx파일이 컴파일되고 응용프로그램과 연결된다.

사전 컴파일 단계는 유틸리티를 사용하여 수행되지만, 이것은 일반적으로 사람의 시각적 개발 환경에서 자동으로 설정되므로 빌드가 완료되면 프로세스가 자동으로 수행된다.

Java 또는 를 사용하는 경우NET, 위에서 C++로 기술한 것과 같은 절차는 후처리 바이트 코드 강화를 이용하여 이루어진다.어떤 클래스가 영구적일지 선언하는 파일을 설정한 다음 유틸리티나 API 또는 IDE 통합을 사용하여 실행하거나 디버깅하기 전에 클래스를 향상시킨다.

Versant는 표준 JDOJPA를 기반으로 하는 다른 Java API를 제공한다.API의 그러한 버전에서, 시스템은 그것이 XML의 종류인지 주석 종류인지 지속성을 선언하기 위해 정의된 표준을 준수한다.그런 다음 유틸리티를 사용하여 개선 작업을 수행한다(와 유사).NET) 또는 빌드 프로세스 중에 Eclipse 플러그인 또는 Microsoft Visual Studio 통합과 함께 더 일반적으로 사용.

관계형 데이터베이스와의 통합

Versant의 고객 중 많은 비율이 관계형 테이블과 어떤 형태로든 통합한다.이는 온라인/오프라인, 배치 기반, 트랜잭션 등과 같은 요구 사항에 따라 몇 가지 방법으로 달성될 수 있다.

XA

Versant는 분산 트랜잭션에 대한 XA 프로토콜을 지원한다.이를 통해 관계형 데이터베이스를 통한 온라인 분산 거래에 참여할 수 있다.관계형 테이블과의 상호작용은 사용자 정의 코드에서 ORM 솔루션, J2EE 애플리케이션 서버(엔티 관계 모델링), OB 등으로 전달되는 메시지 등에 이르기까지 다양한 형태를 취할 수 있다.XA API는 Versant 데이터베이스가 동일한 트랜잭션 컨텍스트에서 Versant 및 관계형 데이터베이스 모두의 변경을 조정하는 외부 트랜잭션 모니터에 의해 제어되는 리소스의 역할을 할 수 있도록 한다.

ORM

Versant는 JDO(Java Data Objects) 및 최대 절전 JPA와 같은 Java ORM 기술을 사용하여 관계형 데이터베이스와 상호작용할 수 있다.이러한 표준 기반 구현은 트랜잭션 컨텍스트에서 객체를 분리하여 다른 연결에 연결할 수 있는 기능을 가지고 있다.복제가 온전한 관계를 유지하기 위해 Versant는 응용프로그램이 데이터베이스 ID라고 알려진 개념을 사용하도록 요구한다는 점에서 제약이 있다.Versant는 연결이 끊어진 데이터 양식 이외의 어떤 형태로도 ORM 형식의 애플리케이션 ID를 지원하지 않는다.

XML

Versant는 XML 데이터를 가져오고 내보낼 수 있는 도구를 가지고 있다.예를 들어, 필요한 경우 XSLT 변환을 적용한 다음 관계형 테이블로 가져오면, Versant 데이터베이스에서 XML로 개체를 내보내 데이터의 일괄 기반 복제를 수행할 수 있다.반대 방향도 가능하다.자바에서 XML을 사용하는 가장 일반적인 접근법은 런타임으로 객체를 XML 형태로 변환하는 JAXB를 사용하여 정보를 동적으로 복제하는 것이다.JAXB를 사용하여, Versant 데이터베이스는 XML 양식을 가져오는 대신 객체만을 사용하여 작업하면 된다.본질적으로 관계형 데이터베이스에서 나오는 XML은 JAXB를 사용하여 런타임에 객체로 변환되고 그 객체는 Versant 데이터베이스로 유지된다.

커스텀 코드

C++ 사용자는 관계형 데이터베이스와의 통합에 특히 어려움을 겪는다.Versant는 이러한 고객의 통합 문제를 해결하기 위해 컨설팅을 제공하지만, 각 애플리케이션에 대한 맞춤화가 필요한 솔루션을 제품화된 형태로 제공하지는 않는다.

트랜잭션

데이터베이스에 연결될 때 기본적으로 Versant는 항상 암시적으로 트랜잭션에 포함된다.또한 VOD는 XA 프로토콜을 지원하며 명시적인 거래 구분이 필요한 JDO, JPA와 같은 특정 표준 기반 API'에 적용한다.거래의 시작/종료를 선언해야 하는 불확실한 형태의 거래가 있다.

현재 트랜잭션에서 수정된 메모리 개체에서 삭제하려면 다른 트랜잭션을 암시적으로 시작하는 롤백을 발행하여 현재 트랜잭션에 대해 전역적으로 수행하거나 동일한 트랜잭션 내에서 특정 통화를 사용하여 분리 또는 전역적으로 수행할 수 있다.

잠금 및 캐싱 전략

Versant는 기본적으로 데이터베이스 서버의 객체가 AID 방식으로 클라이언트 액세스와 동기화되도록 하기 위해 비관적인 잠금 전략을 사용한다.이는 스키마와 인스턴스 객체 모두에 대해 잠금 조합을 사용함으로써 이루어진다.

데이터베이스 서버 프로세스는 동일한 오브젝트에 대한 접근의 동시성을 제어하기 위해 오브젝트 수준에서 잠금 요청 대기열을 유지한다.업데이트 요청은 객체의 기존 독서자가 있는 경우 큐를 설정한다.이 요청은 모든 현재 독자들이 자물쇠를 풀거나 타임아웃(클라이언트가 처리할 수 있는 예외는 던져짐)을 할 때 진행된다.자물쇠는 일반적으로 거래 경계에서 해제된다.업데이트 요청에 의해 대기열이 설정되면 다른 모든 요청은 업데이트 요청 뒤에 대기열에 포함된다.업데이트 요청이 채워지면 대기열에 있는 모든 읽기 요청이 쇄도하여 읽기 잠금을 받고 개체를 반환하며, 다른 업데이트가 없으면 대기열이 사라진다.이 아키텍처에서 잠금은 객체 수준에서 이루어지기 때문에 잘못된 대기 및 잘못된 교착 상태가 발생하지 않는다.

예를 들어, 클라이언트 캐시를 동기화하는 다른 방법으로는 고전적인 타임스탬프 메커니즘을 사용하는 낙관적인 잠금 전략이 있다.VOD는 또한 멀티캐스트를 사용한 클라이언트 캐시 동기화 형식을 제공한다.또한 동기화 또는 비즈니스 로직 작업 흐름에 사용할 데이터베이스 서버 내의 이벤트를 트리거하기 위해 클라이언트가 등록할 수 있는 이벤트 메커니즘을 제공한다.

확장성

저장

Versant 지원, 다중 파일 및 다중 프로세스 구성데이터 스토리지는 하나의 파일이나 여러 개의 파일로 이루어지지만, 로깅 하위 시스템(논리적이고 물리적 로그 파일)을 위한 지원 파일이 있다.이러한 로그 파일은 동시 사용자 부하 시 고성능 및 확장성과 온라인 데이터베이스 백업 프로세스에 사용된다.

클라이언트

Versant는 다중 사용자 클라이언트 서버 데이터베이스로 수천 명의 사용자가 동시에 연결된 프로덕션 애플리케이션을 가지고 있다.따라서 Versant는 또한 애플리케이션 프로세스와 동일한 주소 공간에 연결되고 내장될 수 있다(그러므로 내장형 데이터베이스도 될 수 있다).

퍼포먼스

Versant는 내부 성능 및 확장성 벤치마크를 사용하여 새로운 하드웨어의 릴리즈, 패치 및 세대에 걸쳐 시간에 따른 동작을 모니터링하고 측정한다.

Versant는 공개 포럼에서 다른 비표준 벤치마킹 활동을 했다.[14][15]

Versant는 1990년대 초에 007 벤치마크를 실행했지만, 객체 데이터베이스에 대해 이치에 맞는 산업 벤치마크를 제공하지 않기 때문에 현재 어떠한 비교도 제공하지 않는다.

고려 대상 후보 중 한 명은 TPC-E로, 오늘날의 컴퓨팅 환경을 대표하는 것을 목표로 하는 새로운 복합 모델을 가진 새로운 OLTP 표준 데이터베이스 벤치마크가 되어야 했다.TPC-E는 금융 거래 시스템 모델에 기초한다.그러나 비교 결과는 얻을 수 없었다.그 이유는 TPC가 코드의 어떤 부분이 벤치마크의 "드라이버"에 있고 어떤 부분이 "데이터베이스" 기능에 있는지와 관련된 요건을 지정하기 때문이다.그러나 드라이버 대 애플리케이션 로직 인터페이스는 데이터 수준에서 완전히 정의된다.즉, 관계형 액세스를 측정할 때 C++ 객체에 매핑하는 데 오버헤드가 발생하지 않는다.비즈니스 논리를 구현하기 위해 드라이버에서 필요한 형태로 원시 데이터를 매핑하는 것은 벤치마크 측정에서 완전히 벗어났다.객체 데이터베이스에 관한 한, C++ 객체를 운전자 데이터 구조로 매핑을 해제하고, 그렇게 함으로써 벤치마크 타이밍의 일부로서 그 활동의 비용을 측정해야 한다.

그러나 이것은 사람들이 객체지향적 모델을 만들어 내는 객체지향적 애플리케이션을 작성하는 현실 세계 애플리케이션과는 정반대다.관계형 데이터베이스에서는 객체로부터 관계형 데이터 구조에 매핑/매핑 해제해야 한다.TPC-E는 측정에서 "매핑 효과"를 배제하는 방식으로 작성되었으며, 이는 객체 데이터베이스의 작동 원리에 의해 TPC-E가 실제 세계 애플리케이션에서 발생하지 않는 활동인 "매핑되지 않은 효과"의 측정을 강제하는 방식으로 작성되었음을 의미한다.따라서 TPC-E를 사용하면 실제 컴퓨팅 비용은 관계성을 위해 제거되고 객체 데이터베이스에 더 나쁜 비용이 추가된다.

애드온 모듈

Versant는 오브젝트 데이터베이스에 대한 배포 또는 액세스를 위한 추가 모듈을 제공한다.

  • V/Management Center: V/MC는 Versant Object Database에 대한 성능 데이터와 분석 정보를 실시간으로 제공한다.예를 들어, 데이터베이스 가용성에 영향을 미치기 전에 관리자에게 잠재적인 문제에 대해 경고한다.Eclipse 기반 RCP 클라이언트로 설계되었어.
  • Versant Compact:온라인 데이터베이스 유지 관리.
  • Versant FTS: 고가용성 데이터베이스 서버.
  • Versant Async Server: 운영 데이터베이스 복제.
  • Versant HA 백업:고가용성 백업 솔루션.
  • Versant SQL: SQL Access & Reporting.

적용들

일반적으로 Versant 데이터베이스를 사용하는 "최상의 종류의 애플리케이션"은 온라인 트랜잭션 처리 성격의 애플리케이션별 데이터베이스를 요구하는 애플리케이션이다.Versant 기술이 전통적인 관계 기술보다 더 나은 성능과 확장성을 제공하는 특정한 애플리케이션 특성이 있다: 복잡한 모델, 대량의 데이터, 다수의 동시 사용자.

VOD는 대형 증권 거래소를 위한 글로벌 거래 플랫폼, 대형 통신사를 위한 네트워크 관리, 국방 기관을 위한 인텔리전스 분석, 대형 항공사/호텔 기업을 위한 예약 시스템, 은행 및 운송 기관을 위한 리스크 관리 분석, 대규모 멀티플레이어 온라인 게임과 같은 애플리케이션을 사용했다.e 시스템, 네트워크 보안부정 행위 탐지, 로컬 번호 이동성, 고급 시뮬레이션 및 소셜 네트워킹.

참조

  1. ^ "Versant - Actian – Take Action on Big Data". Versant. Retrieved 18 October 2012.
  2. ^ "TechView 제품 보고서: Versant Object Database", odbms.org.2010년 10월 6일 검색됨2013년 8월 17일 웨이백 머신보관
  3. ^ a b "Revenues of $6.0 million for Q4 2008 / Versant acquires db4objects' database business / Share repurchase program announced". Press release. December 4, 2008. Archived from the original on December 21, 2008. Retrieved December 8, 2013.
  4. ^ Chou, H.T.; Dewitt, David J.; Katz, Randy H.; Klug, Anthony C. (October 1985). "Design and implementation of the wisconsin storage system". Software: Practice and Experience. 15 (10): 943–962. doi:10.1002/spe.4380151003. S2CID 40376932.
  5. ^ Versant Object Technology (April 30, 1997). "Proxy Statement". Schedule 14A. US Securities and Exchange Commission. Retrieved December 4, 2013.
  6. ^ a b Versant Object Technology (March 28, 1997). "Annual Report for the fiscal year ending December 31, 1996". Form 10-KSB. US Securities and Exchange Commission. Retrieved December 4, 2013.
  7. ^ Versant Object Technology (April 30, 1998). "Proxy Statement". Schedule 14A. US Securities and Exchange Commission. Retrieved December 4, 2013.
  8. ^ a b Versant Corporation (January 14, 2009). "Annual Report for the fiscal year ended October 31, 2008". Form 10-K. US Securities and Exchange Commission. Retrieved December 4, 2013.
  9. ^ "Giving Thanks for Versant and Actian". Blog. Enterprise Strategy Group. November 26, 2012. Retrieved December 3, 2013.
  10. ^ Doug Henschen (February 1, 2013). "Actian Builds Mini Big Data Empire". Information Week. Retrieved December 3, 2013.
  11. ^ [3] Dobb's Journal은 "여러 NoSQL Analytics를 제공하는 새로운 Versant JPA"라고 말했다.2012년 10월 28일.
  12. ^ [5] "FastObjects Tutorial", 유튜브.2012년 1월 9일.
  13. ^ [6] Db4o 웹 사이트 [1] 웨이백 머신에 보관2012-12-27
  14. ^ "폴 포지션, 오픈 소스 데이터베이스 벤치마크" polepos.org2011년 2월 24일 검색됨
  15. ^ "Versant enJin으로 IBM WebSphere Application Server Performance 가속화", ibm.com2010년 10월 6일 검색됨