데이터베이스의 불변성 또는 불변성의 환상을 제공하는 데이터베이스에서 얻을 수있는 이점에 관심이있는 경우 Datomic을 확인하십시오.
Datomic 은 Rich Hickey가 Think Relevance와 제휴하여 발명 한 데이터베이스로, 아키텍처, 목표, 데이터 모델을 설명하는 비디오가 많이 있습니다. 검색 infoq, 특히 제목은 Datomic, Database as a Value 입니다. confreaks에서는 2012 년 Euroclojure 컨퍼런스에서 Rich Hickey가 기조 연설을 할 수 있습니다.
vimeo.com/53162418에는보다 개발 지향적 인 강연이 있습니다.
stuart halloway at.pscdn.net/008/00102/videoplatform/kv/121105techconf_close.html의 또 다른 내용은 다음과 같습니다.
- 데이토 믹 (Datomic)은 데이텀 (Datums)이라고하는 사실에 대한 데이터베이스입니다.
- E 엔티티 ID
- 엔티티 의 속성 이름 (네임 스페이스를 가질 수 있음)
- V 속성 값
- T 거래 ID, 시간 개념이 있습니다.
- O 단정 (현재 또는 현재 값), 거부 (과거 값)의 한 작업;
- EDN (Extensible Data Notation)이라는 자체 데이터 형식을 사용합니다.
- 거래는 ACID입니다
- 데이터 로그를 쿼리 언어로 사용하며 SQL + 재귀 쿼리로 선언적입니다. 쿼리는 데이터 구조로 표시되며 jvm 언어로 확장되므로 클로저를 사용할 필요가 없습니다.
- 데이터베이스는 3 개의 개별 서비스 (프로세스, 머신)에서 분리됩니다.
- 각 서비스를 개별적으로 확장 할 수 있습니다.
- 오픈 소스는 아니지만 Datomic의 무료 (맥주에서와 같이) 버전이 있습니다.
- 유연한 스키마를 명시 할 수 있습니다.
- 속성 세트가 열려 있습니다
- 언제든지 새로운 속성을 추가
- 정의 또는 쿼리에 강성이 없음
이제 정보가 제 시간에 사실로 저장되기 때문에 :
- 사실은 데이터베이스에 사실을 추가하고 삭제하지 않습니다 (법에 의해 요구되는 경우 제외)
- 모든 것을 영원히 캐시 할 수 있습니다. Query Engine, 애플리케이션 서버에 메모리 데이터베이스로 존재합니다 (jvm 언어의 경우 비 jvm 언어는 REST API를 통해 액세스 할 수 있음).
- 과거의 시간에 쿼리 할 수 있습니다.
데이터베이스는 쿼리 엔진에 대한 값이며 매개 변수이며 QE는 연결 및 캐싱을 관리합니다. db를 값으로, 메모리에서 변경할 수없는 데이터 구조로 볼 수 있으므로 "미래의"값으로 작성된 다른 데이터 구조와 병합하여 실제 데이터베이스를 변경하지 않고 미래의 값으로 QE 및 쿼리에 전달할 수 있습니다. .
Rich Hickey의 codeq 라는 오픈 소스 프로젝트가 있으며 github Datomic / codeq에서 찾을 수 있습니다 .github Datomic / codeq는 git 모델을 확장하고 git 객체에 대한 참조를 datomic-free 데이터베이스에 저장하고 코드를 쿼리합니다. 데이토 믹스 사용법 의 예 를 볼 수 있습니다 .
데이텀을 ACID NoSQL로 생각할 수 있으며 데이텀을 사용하면 테이블 또는 문서 또는 Kv 저장소 또는 그래프를 모델링 할 수 있습니다.