인피니티DB

Infinity

인피니티DB는 확장 java.util.concurrent를 가진 All-Java 내장 데이터베이스 엔진 및 클라이언트/서버 DBMS입니다.Concurrent Navigable Map 인터페이스(java.util의 서브 인터페이스).핸드헬드 디바이스, 서버, 워크스테이션 및 분산 설정에 배치되는 맵).이 설계는 클라이언트 프로그래머가 [1]장애의 위험 없이 높은 수준의 성능을 달성할 수 있도록 하는 자체 잠금 없는 동시 B-트리 아키텍처를 기반으로 합니다.

새로운 클라이언트/서버 버전 5.0은 알파 테스트 중이며, 확립된 임베디드 버전을 포장하여 안전한 리모트 서버를 통해 공유 액세스를 제공합니다.

임베디드 시스템에서는 Infinity를 사용하여 단일 임베디드 데이터베이스 파일에 데이터를 저장 및 가져옵니다.가변 길이 항목 공간에 직접 액세스할 수 있는 DB API입니다.데이터베이스 클라이언트 프로그래머는 종속 애플리케이션의 요구를 직접 충족하는 특수 모델뿐만 아니라 전통적인 관계를 구축할 수 있습니다.항목 수, 데이터베이스 크기, JVM 크기에는 제한이 없기 때문에 Infinity는DB는 랜덤 액세스 스토리지를 제공하는 가장 작은 환경에서도 작동할 수 있으며 대규모 설정으로 확장할 수 있습니다.기존 관계 및 특수 모델을 동일한 데이터베이스 파일로 지정할 수 있습니다.인피니티DB는 표준 관계 및 기타 모든 유형의 데이터에 맞게 최적화되어 클라이언트 애플리케이션이 가상 8코어 시스템에서 초당 최소 100만 번의 작업을 수행할 수 있습니다.

AirConcurrentMap은 Java ConcurrentMap [2]인터페이스를 구현하는 인메모리 맵이지만 내부적으로는 멀티코어 설계를 사용하여 주문 시 성능과 메모리가 가장 빠르며 중간에서 다수의 [3]엔트리를 보유합니다.AirConcurrentMap 반복은 특정 맵유형에 관계없이 Java Map 반복자보다 빠릅니다.

맵 API

인피니티DB는 확장 표준 java.util.concurrent로 액세스할 수 있습니다.ConcurrentNavigableMap 또는 낮은 수준의 'ItemSpace' API를 통해 이루어집니다.ConcurrentNavigableMap 인터페이스는 java.util의 서브 인터페이스입니다.맵이지만 특별한 순서 지정 및 동시 처리 방법이 있습니다.이것은 java.util.concurrent와 동일한 API입니다.Concurrent Skip List Map.지도를 중첩하여 복잡한 구조를 형성할 수 있습니다.맵은 표준 의미론을 가지고 있지만 내부적으로 '태플 공간'에서 작동하며, 맵은 실제로 저장되지 않고 각각 불변의 태플 접두사에 지나지 않는 도우미입니다.액세스에 필요한 경우 맵을 고속으로 동적으로 작성할 수 있으며 스레드 세이프 및 멀티 코어 동시 작성 가능합니다.사용 가능한 키 및 값 유형에는 모든 Java 원시 데이터 유형, 날짜, 문자열, 작은 문자 또는 바이트 배열, 'ByteStrings', '대규모 배열' 인덱스, 문자 긴 개체 또는 이진 긴 개체, 그리고 특수 목적 유형인 'EntityClass' 및 'Attribute'가 포함됩니다.맵은 다중값일 수 있습니다.응용 프로그램은 맵 기반 액세스만 사용하도록 선택할 수 있으며, 맵 액세스는 래퍼일 뿐 태플 수준의 구분이 없기 때문에 하위 수준의 'ItemSpace' 액세스와 동일한 튜플을 혼합할 수 있습니다.

하위 수준 'ItemSpace' 데이터 모델

12개의 기본 데이터 유형은 '구성 요소'라고 불리며 원자적입니다.컴포넌트는 저장 및 검색 단위인 '아이템'이라는 짧은 컴포지트에 연결될 수 있습니다.이러한 항목을 결합하는 상위 수준의 구조는 클라이언트에서 설계되며, 예를 들어 무제한의 열 또는 속성의 무제한 크기 레코드와 무제한 크기의 복잡한 속성 값이 포함됩니다.키는 컴포넌트의 구성일 수 있습니다.속성 값은 복합 컴포넌트 세트, CLOB(Character Large Object), Billary Large Object(BLOB) 또는 무제한 스파스 배열 순으로 지정할 수 있습니다.여러 항목으로 구성된 기타 상위 수준의 구조에는 순서 맵, 순서 세트, 네 배의 엔티티 속성 값 네트, 트리, DAG, 분류법 또는 전체 텍스트 인덱스와 같은 키/값 연관성이 있습니다.이러한 혼합은 다른 사용자 정의 클라이언트 정의 구조와 함께 발생할 수 있습니다.

모든 ItemSpace는 확장 JSON 문서로 표시될 수 있으며 JSON 프린터와 파서가 제공됩니다.JSON 문서는 기본 문서가 아니지만 하위 문서의 경로를 나타내는 항목 접두사에 의해 결정된 축척으로 원하는 항목 집합에 매핑됩니다.따라서 데이터베이스 전체 또는 그 서브트리가 단일 값까지 확장 JSON으로 표현될 수 있습니다.항목은 항상 정렬된 상태로 유지되므로 개체의 JSON 키는 항상 순서대로 표시됩니다.

데이터 부호화

'ItemSpace'는 전체 데이터베이스를 나타내며, 다른 상태 없이 단순하게 정렬된 항목 집합입니다.항목은 실제로 가변 길이 이진 형식으로 인코딩된 각 구성요소와 함께 문자 배열에 저장됩니다. 구성요소는 올바르게 정렬되는 표준 형식으로 자체 설명됩니다.프로그래머는 컴포넌트를 프리미티브로만 취급하며 저장된 데이터는 강하게 입력됩니다.데이터는 JSON 또는 XML에서처럼 약한 타이핑으로 구문 분석되는 텍스트로 저장되지 않으며 프로그래머 정의 이진 스트림 표현에서 구문 분석되지 않습니다.Java 객체시리얼라이제이션과 같이 보안, 문서, 업그레이드, 테스트, 버전 관리, 확장 및 디버깅 문제가 발생할 수 있는 커스텀클라이언트 방식의 바이너리 포맷은 없습니다.

퍼포먼스 확장

시스템에 대한 모든 액세스는 메모리에 있을 때 여러 스레드에 걸쳐 100만 번의 조작/초 정도의 속도로 한 번에 하나의 가변 길이의 'Item' 또는 'Tuple'을 저장 또는 검색할 수 있는 몇 가지 기본적인 방법을 통해 이루어집니다.동작은 의 표준 Map API 중 하나입니다.get(),put(), 반복기 등 또는 하위 레벨에서는insert(),delete(),update(),first(),next(),last(),그리고.previous(). 표준 아이템은 메모리에서 압축되지 않은 30바이트 정도이지만, 예를 들어 LOB는 1KB 아이템을 사용합니다.각 작업은 하나의 항목에만 영향을 미치기 때문에 작은 데이터 구조에 빠르게 액세스할 수 있습니다.이는 전체 JSON 또는 XML 텍스트 또는 전체 Java Object 직렬화 그래프를 포맷 및 구문 분석하는 것과 같은 청크 액세스와 대조됩니다.ItemSpace의 공간 및 성능 확장은 클라이언트가 지정한 여러 항목 구조가 생성, 증가, 축소 또는 사라짐에 따라 원활하게 이루어집니다.온스토리지 퍼포먼스는 블록 지향 B-트리와 마찬가지로 블록은 약 4KB(액세스당 O(log(n)))입니다.디폴트로는 2.5MB의 블록캐시가 있으며, 크기는 무제한이지만 보통 약 100MB입니다.캐시는 필요한 경우에만 커집니다.

공간 확장

성능과 효율성을 위해 항목은 단일 B-트리 접두사(압축 및 가변 길이)에 추가 압축을 위해 해석되지 않은 바이트 시퀀스로 저장됩니다.일반적으로 B-트리는 100GB 범위까지 확장할 수 있지만 제한은 없습니다.파일이 1개뿐이므로 로그나 다른 파일을 쓰거나 플러시할 수 없습니다.인피니티DB는 4가지 압축 유형(프리픽스, 접미사, zlibUTF-8)을 통해 데이터베이스 파일의 크기를 최소화합니다.

Schemaless 업그레이드

구조체 확장 또는 변경 시 스키마 업그레이드는 런타임에 새로운 방법으로 항목을 추가하거나 제거함으로써 수행되며 업그레이드 스크립트는 없습니다. 따라서 데이터 모델은 NoSQL 및 스키마리스입니다.

일반적인 Java 프리미티브 유형 외에도 이름 또는 번호로 식별되는 'EntityClass' 및 'Attribute' 유형이 있습니다.이러한 '메타데이터'는 옵션의 '메타데이터'로, 모든 항목의 다른 구성 요소와 함께 사용할 수 있습니다.예를 들어 각 테이블에는 항목 앞쪽에 있는 특정 EntityClass가 지정되고 각 열에는 다른 속성이 지정되는 등 테이블을 나타내는 데 사용할 수 있습니다.표의 항목은 각각 특정 EntityClass로 시작하여 '엔티티'(키와 같은)를 나타내는 하나 이상의 정상 프리미티브가 있으며, 열에 대응하는 특정 속성, 마지막으로 해당 속성의 값을 나타내는 일부 정상 프리미티브가 있습니다.이 단순한 패턴은 언제든지 확장하여 임의의 Attribute 내부에 중첩된 테이블 또는 다른 Atribute 내부에 중첩된 Atribute 또는 다중값 Atribute 등을 허용할 수 있습니다.다른 곳에는 고정된 스키마가 없으므로 시스템에 도착한 새 데이터가 항목 수준의 세분성으로 설명됩니다.EntityClass 및 Attribute 번호 또는 이름은 확장 JSON으로 나타낼 수 있습니다.웹 기반 클라이언트/서버 데이터베이스 브라우저에 데이터가 표시되면 정렬된 형식의 항목 목록, JSON 문서 또는 항목에 혼합된 EntityClass 및 Attribute에 의해 가시 구조가 결정되는 중첩 가능한 테이블로 데이터를 표시, 조작 및 전송할 수 있습니다.JSON의 역동적인 느슨한 유연성과 테이블의 격식을 겸비하고 있습니다.

트랜잭션성

글로벌 'ACD' 트랜잭션과 스레드당 'ACID' 트랜잭션이 모두 제공됩니다.각 무한대DB 인스턴스는 데이터를 단일 데이터베이스 파일에 저장하므로 추가 로그 또는 롤백 파일이 필요하지 않습니다.전원 장애 또는 기타 하드웨어 오작동을 제외한 모든 장애 발생 시 데이터베이스는 마지막 글로벌 커밋 완료 시점의 상태와 일관성이 보장됩니다.갑작스러운 종료 후 복구는 즉시 이루어지며 느린 로그 재생이 필요하지 않습니다.벌크 로드는 글로벌 트랜잭션으로 데이터 크기가 제한되지 않으며 다른 모든 사용과 동시에 수행됩니다.글로벌 트랜잭션에서는 스레드 간 분리가 제공되지 않으므로 의미론은 'ACID'가 아닌 'ACD'입니다.또는 ACID 트랜잭션에서는 스레드 간 분리를 가능하게 하는 최적 잠금을 사용합니다.

즉시 가비지 수집

데이터 구조가 확장 및 축소됨에 따라 여유 공간이 즉시 회수되어 다른 구조에서 사용할 수 있게 됩니다.가비지 회수 단계 중 점진적인 공간 누출이나 장기 중단 없이 시스템을 무한히 실행할 수 있습니다.데이터 구조가 비워지면 '덤스톤'이나 다른 자리 표시자를 남기지 않고 모든 공간이 재활용됩니다.예를 들어, 매우 큰 다중값 Atribute는 하나의 값으로 축소되어 다른 단일값 Atribute와 같이 효율이 향상될 수 있습니다.마지막 값이 삭제되면 Atribute의 공간을 포함하여 해당 Atribute의 모든 공간이 회수됩니다.또한 행에 값이 없는 Atribute만 있는 경우 행도 완전히 회수됩니다.테이블이 모든 행을 잃으면 테이블 공간이 회수됩니다.모든 데이터 구조 크기 또는 유형에 이 속성이 있습니다.참조 카운터가 없으므로 모든 유형의 그래프가 자동으로 증분 수집됩니다.

상품들

인피니티DB 클라이언트/서버(알파 테스트 상태) 기능:

  • Infinity 세트에 대한 안전한 원격 공유 액세스를 위한 클라이언트/서버 시스템DB Embedded 데이터베이스 파일.
  • 사용자, 역할, 데이터베이스 및 권한을 안전하게 관리하기 위한 백엔드 웹 관리 콘솔.
  • 표 형식, JSON 및 ItemSpace 보기를 사용하여 백엔드 웹 보안 데이터베이스 검색 및 편집표 형식 모드에서는 데이터를 중첩 가능한 문서, 표 및 목록으로 표시하고 문단 또는 데이터 항목 세분화에서 편집 및 업데이트를 동시에 수행합니다.
  • Python 및 BLOB 데이터에 대한 컬을 통한 안전한 RESTful 액세스 및 bash.
  • RemoteItemSpace 기능을 사용하여 Java 프로그램에 의한 원격 액세스.
  • 패턴 관계형 DBMS와 동등한 ItemSpace를 포함한 ItemSpace 데이터 구조의 SQL이 아닌 임의 재구성 및 조회를 위한 쿼리, 선택, 프로젝트, 조인 및 주문 기준.
  • ItemSuffix Transfer는 복사, 이동, 차이, 결합 및 교차로 데이터베이스 내 또는 데이터베이스 간에 데이터 이동성을 제공합니다.

InfinityDB Encrypted(버전 5)(베타 테스트 상태) 기능:

  • 데이터베이스 블록레벨에서의 AES-128 또는 AES-256에 의한 암호화
  • 블록 수준에서 HMAC-SHA256을 사용한 인증
  • 암호화된 블록의 고속 해싱
  • HMAC 신뢰성 검사를 위한 암호화되지 않은 블록 해싱
  • 여러 인증서 또는 공용 키로 서명
  • 증분 서명 - DB를 열 때마다 서명을 추가할 수 있습니다.
  • 단일 DB 파일의 메타데이터에 인증서 저장 및 구성
  • 커스텀 클라이언트 서명 검증 전략 - 'N of M', 검증된 증명서 등
  • 증명서 검증

인피니티DB Embedded (버전 4)의 기능:

  • NoSQL 모델 - 단순하면서도 일반성을 위해 'ItemSpace'라고 불리는 정렬된 계층 키/값 저장소입니다.
  • 초당 100만 ops, 뛰어난 멀티코어 확장성
  • 최대 10배 이상의 압축
  • 트랜잭션
  • 즉시 설치, 관리 없음: 전체 DB가 하나의 파일에 있음
  • JSON 인쇄/파싱은 더 많은 데이터 유형을 위한 확장자: JSON은 모든 ItemSpace 데이터를 나타낼 수 있습니다.
  • 강력한 파일 업데이트 패턴으로 손상 방지
  • 로그 없이 갑작스럽게 애플리케이션을 종료한 후 즉시 복구
  • 12개의 기본 데이터 유형
  • BLOB/CLOBs(바이너리 롱 오브젝트 및 문자 롱 오브젝트)
  • 'EntityClass' 및 'Attribute' 메타데이터 프리미티브 데이터 유형으로 유연하고 런타임 확장 가능한 구조 구현

AirConcurrentMap은 Java ConcurrentNavigableMap 구현입니다.특징:

  • 중간 크기에서 대형 크기까지 JDK 맵보다 빠릅니다.특허 출원 중입니다.
  • 약 1K 엔트리 이상의 표준 Java 라이브러리 맵보다 메모리 효율이 우수합니다.
  • 독자적인 병행 맵스캔은 Java 1.8보다 빠릅니다.
  • 각각 Java 1.8 맵보다 빠릅니다.

양쪽 Infinity에 대해DB 및 AirConcurrentMap:

  • 동시에 여러 코어로 잠금 없이 멀티 스레드 처리를 수행하면 인텔 i7 등의 멀티 코어 플랫폼에서의 퍼포먼스가 약 7배 향상됩니다.두 제품 모두 특허 출원 중입니다.
  • 표준 Java Map 액세스가 사용됩니다.확장 java.util.concurrent.ConcurrentNavigable 인터페이스가 구현되어 기존 애플리케이션 또는 테스트 코드를 직접 대체할 수 있습니다.이 인터페이스는 특수한 동시 처리 방식 및 원래 SortedSet을 개선하는 순서 지정 기능을 제공합니다.

역사

Roger L. Deran은 20년 이상 전에 Infinity Database Engine을 설계 및 개발했으며 미국 특허 5283894[4] 및 10417209를 [5]보유하고 있습니다.Infinity Database Engine은 1980년대에 NFL 팀에 라이선스된 ROSCOR 스포츠 비디오 에디터(RSVE)에서 Intel 8088 어셈블리 언어로 처음 도입되었습니다.렉시콘은 1989년에 RSVE를 인수하여 모든 종류의 프로 스포츠와 [6]대학 스포츠로 그 전개를 크게 확대하였습니다.Java 버전 2.0은 트랜잭션 기능을 추가했으며 버전 3.0은 특허 출원 중이며 Infinity에 적용됩니다.DB 및 AirConcurrentMap.AirConcurrentMap은 새로운 반면, Infinity DB는 다양한 종류의 수천 개의 사이트에서 계속 사용되고 있습니다.

2002년부터 Boiler Bay Inc.에서 판매된 All-JAVA InfinityDB의 용도는 다음과 같습니다.

  • 의약품 및 의료 데이터의 통합
  • 조류학 데이터의 수집, 설명, 통합 및 공유
  • 다양한 종류의 분류법의 표현
  • 소스 코드 저장소 탐색 등의 프로그래밍 환경 도구
  • 텍스트 인덱서
  • 이메일 통합 시스템
  • 분산형 산업 데이터 수집 시스템.

레퍼런스

  1. ^ Peters, L & Lavers, T (2008). Swing Extreme Testing: The Extreme Approach to Complete Java Application Testing. Packt Publishing. p. 224. ISBN 9781847194824.
  2. ^ "The Map Interface (The Java™ Tutorials > Collections > Interfaces)".
  3. ^ http://boilerbay.com/docs/AirConcurrentMap_Performance_Testing.pdf[베어 URL PDF]
  4. ^ US 5283894 "캐시된 노드에 대한 잠금 없는 동시 B 트리 인덱스 메타 액세스 방식"
  5. ^ US 10417209 "Copy On Write를 사용한 동시 인덱스"
  6. ^ New York Times - 스포츠 월드 스페셜: 비디오 테크놀로지, 커스텀 리플레이

「 」를 참조해 주세요.