NextTypes는 공통 데이터 유형 시스템을 사용하여 단일 통합 시스템에서 데이터베이스, 프로그래밍 언어, 통신 프로토콜, 파일 시스템, 문서 관리자, 운영 체제, 프레임 워크, 파일 형식 및 하드웨어와 같은 다른 시스템의 특성을 통합하는 표준 기반 정보 저장 , 처리 및 전송 시스템입니다.
참조 구현은 Java 17에서 프로그래밍되며 PostgreSQL 15 데이터베이스 관리자를 사용합니다. Apache 2.0 라이센스에 따라 쉽게 설치 가능한 전쟁 파일로 배포됩니다. 소프트웨어 인터페이스 (읽기 전용 모드)를 테스트하려면 설치하지 않고도 상기 소프트웨어를 사용하여 개발 된 프로젝트 웹 사이트를 탐색 할 수 있습니다. 왼쪽의 메뉴, "제어판"섹션 및 페이지 상단/오른쪽의 버튼에서 사용 가능한 작업을 찾을 수 있습니다.
NextTypes는 숫자, 텍스트, 바이너리, 날짜, JSON 또는 XML과 같은 원시 PostgreSQL 데이터 유형을 통합하지만 명명법을 단순화하고 다른 시스템과의 통합을 용이하게하기 위해 다른 이름을 제공합니다. 예를 들어, "smallint", "integer"및 "bigint"the root "int"를 사용하는 대신, 비트 수 (int16, int32 및 int64)가 사용되거나 "문자 변동"또는 "varchar"대신 일부 프로그래밍 언어에서와 같이 "문자열"이 사용됩니다.
또한 HTML 또는 URL과 같은 다른 유형의 데이터를 추가하고 PostgreSQL 기능을 사용하여 열에 대한 복합 데이터 유형을 작성하여 파일, 문서, 이미지, 오디오 및 비디오의 데이터 유형이 포함됩니다. 이들 필드의 이진 함량은 Clamav 안티 바이러스로 스캔 할 수 있습니다. HTML 또는 이미지와 같은 복잡한 데이터 유형은 개별적으로 액세스 할 수있는 요소로 구성되며 허용되는 태그 또는 형식과 같이 제한을 적용 할 수 있습니다.
스토리지 시스템은 주로 SQL 기반이지만 관계형/네트워크/객체/파일 하이브리드입니다. 각 테이블은 데이터 유형이고 테이블의 각 행은 객체입니다. 각 행에는 기본 키 인 식별자 (ID)가있는 열이 있으며 파일의 생성 날짜 (CDATE), 업데이트 날짜 (UDATE) 및 백업 (백업)과 유사한 메타 데이터가있는 여러 열이 있습니다. 열의 나머지는 객체의 데이터 필드입니다. 데이터 유형의 생성 날짜 (CDATE) 및 변경 (ADATE)도 저장됩니다. 날짜는 UTC 표준을 사용하고 시간, 분, 초 및 마이크로 초를 포함합니다. ISO 8601 표준은 텍스트의 표현에 사용됩니다.
객체의 필드는 기본 유형이거나 식별자를 외국 키로 사용하여 다른 객체를 가리킬 수 있으므로 네트워크 데이터베이스를 형성 할 수 있습니다. 식별자는 고유 인덱스가있는 텍스트 문자열이며 기본적으로 UUID를 수신합니다. 1 차 및 외국 키에서 이러한 단순화 및 균일 성은 다른 시스템과의 자동화 및 통합을 용이하게합니다.
엔티티-관계 모델과의 해당 대응은 관계형 모델의 대응과 유사합니다. 각 엔티티는 객체, 속성은 필드이며 관계 및 여러 속성은 다른 객체를 나타내는 필드로 만들어집니다.
객체 식별자 및 필드는 비 유적, 고유 및 전체 텍스트 검색 인덱스의 일부일 수 있습니다. 데이터 유형 및 객체의 정의는 JSON으로오고 나오는 내보내기 및 가져올 수 있으므로 백업 사본 및 시스템 간 정보 전송이 가능합니다.
{
"이름": "article_language",
"CDATE": "2015-04-01T14 : 30 : 16Z",
"Adate": "2018-09-26T14 : 59 : 35.53Z",
"필드": {
"제목" : {
"유형": "String",
"길이": 254,
"NOT_NULL": True
},
"언어" : {
"유형": "언어",
"길이": 100,
"NOT_NULL": True
},
"텍스트" : {
"유형": "html",
"NOT_NULL": True
},
"기사" : {
"유형": "기사",
"길이": 100,
"NOT_NULL": True
}
},
"인덱스": {
"al_ft_search_index": {
"모드": "fullText",
"필드": [ "제목", "텍스트"]]
}
},
"행동": {}
}변경 및 업데이트 날짜는 낙관적 동시성 제어 시스템을 구현할 수 있습니다. 유형을 변경하거나 개체를 업데이트 할 때 마지막으로 알려진 변경 또는 업데이트 날짜가 표시되면 시스템은이 날짜가 유형 또는 개체의 현재 날짜와 동일했는지 확인하여 나중에 다른 사용자가 수정했는지 확인합니다.
"백업"메타 데이터는 지정된 수의 증분 사본을 각각 전체 사본으로 업데이트 된 객체의 증분 백업 시스템을 생성하는 데 사용됩니다. 객체가 업데이트 될 때마다 메타 데이터 "백업"이 "False"로 변경되어 해당 개체의 사본이 없으며 다음 백업에 복사해야합니다.
트랜잭션 DDL 및 연기 가능한 제약과 같은 PostgreSQL 기능을 사용하여 시스템을 사용하는 동안 시스템을 사용하는 동안 동일한 트랜잭션에서 다양한 데이터 유형 및 객체의 생성 또는 수정을 허용합니다.
전체 텍스트 검색 시스템을 보완하기 위해 PDF의 메타 데이터 및 텍스트 추출, OpenDocument 및 Office Open XML 문서, Microsoft Office 바이너리 형식 및 기타 형식은 Tika를 사용하여 추가됩니다.
NextTypes는 주로 프로그래밍 언어에서 사용 및 자동화를 용이하게하는 일부 객체 지향 기능을 갖춘 관계형 시스템입니다. 객체 관계 시스템과 달리 객체 클래스 서신을 사용하지 않고 대신 생성, 읽기, 업데이트 및 삭제의 기본 액션 (CRUD)을 수행 할 수있는 모든 유형 및 객체에 일련의 일반 클래스 및 메소드를 사용합니다.
여러 테이블을 사용하는 쿼리와 같은 복잡한 동작의 경우 SQL 사용을 용이하게하고 스토리지의 데이터 유형과 통합하는 JDBC보다 높은 수준의 추상화가있는 시스템을 제공합니다. 이 시스템은 단일 메소드를 실행하여 매개 변수화 된 쿼리를 허용하고 테이블 및 열 이름을 매개 변수로 사용하여 SQL 주입에 대한 보호 기능을 제공합니다. 또한 배열을 매개 변수로 사용할 수 있습니다.
기본 조치는 SQL 트리거와 유사하게 가로 채기하여 유형이나 객체를 수정하거나 추가 작업을 수행 할 수 있습니다. 또한 새로운 조치를 정의하고 시스템에 사용할 수 있습니다.
Java 구현에서 숫자와 같은 스토리지의 일부 기본 데이터 유형은 Java Runtime Enviroment의 클래스와 직접적인 서신을 갖습니다. HTML, 문서, 이미지 또는 비디오와 같은 다른 유형의 경우 시스템에는 스토리지 유형과 통합되어 데이터 생성 및 수정을 허용하는 클래스가 있습니다.
사용 된 주요 프로토콜은 HTTP이지만 어댑터는 다른 프로토콜에 대해 만들 수 있습니다. 이 시스템에는 이메일 수신 및 객체로의 변환을 허용하는 SMTP 어댑터가 포함되어 있습니다. HTTP 외에도 X.509 인증서 및 비밀번호 (BCRYPT로 암호화), HTTP 기본 인증, DOS 공격에 대한 보호 및 로봇 파일 및 웹 사이트 맵의 관리를 통해 REST 인터페이스가 구축됩니다. 이 인터페이스를 사용하면 하나의 URL이있는 모든 유형의 데이터, 객체, 필드 및 요소에 액세스 할 수 있습니다.
스토리지, 처리 및 전송 시스템은 HTML, WebDav, Caldav, JSON, XML, RSS, ICALENDAR 또는 기타 시스템과 같은 다양한 뷰 또는 형식을 통해 데이터에 액세스 할 수있는 MVC 시스템을 형성합니다. 이러한 각보기는 모든 유형의 데이터 또는 객체 또는 일부 뷰를 수정하여 사용자의 요구에 맞게 조정할 수 있습니다. UTF-8 인코딩은 시스템 전체에 사용되어 다른 언어로 텍스트를 사용할 수 있습니다.
HTML 뷰는 스토리지/처리 시스템의 모든 동작을 수행 할 수있는 반응 형 및 다중 언어 그래픽 인터페이스를 제공합니다. SVG Resizedable Icons, WCAG Compliance, 구문 강조 표시 (Codemirror) 또는 Wysiwyg (Tinymce)가있는 텍스트 편집기 및 CSRF 및 XSS에 대한 HTML5/CSS3에서 프로그래밍됩니다. 이보기는 HTML5 데이터 유형을 NextTypes와 통합하여 HTML5에서 제공 한 컨트롤을 보완하기 위해 필요한 구성 요소를 인터페이스에 추가합니다. "예제"데이터 유형에서 모든 원시 데이터 유형 및 객체 참조의 컨트롤을 볼 수 있습니다. DOM을 수정하여 HTML보기를 조정할 수 있습니다.
각 객체에는 서버 이름, 데이터 유형 및 객체의 식별자가있는 식별 QR 코드가 있습니다. 이 코드는 실제 객체에 레이블을 지정하거나 모바일 애플리케이션에서 읽는 데 사용될 수 있습니다. JSON-LD 형식으로 일부 데이터를 내보낼 수 있습니다.
다른 뷰는 모든 시스템별로 데이터에 대한 원격 액세스를 허용합니다. JavaScript 및 JSON 또는 XML 뷰를 사용하여 모든 데이터에 액세스하고 브라우저에서 정보 처리를 수행 할 수 있습니다. WebDav보기를 사용하면 데이터 유형 및 객체가 폴더이고 필드가 파일 인 파일 시스템으로 데이터에 액세스 할 수 있습니다. 이를 통해 외부 응용 프로그램으로 객체의 모든 필드를 열고 수정할 수 있습니다. 예를 들어, 워드 프로세싱 응용 프로그램으로 문서 필드를 편집 할 수 있습니다.
Caldav 뷰는 일부 객체를 캘린더 이벤트로 노출시킬 수있는 Webdav보기의 수정입니다. 이러한 이벤트는 icalendar보기를 사용하여 액세스 할 수 있습니다. RSS보기를 사용하면 해당 형식의 클라이언트와 함께 객체 목록에 액세스 할 수 있습니다.