Veritabanındaki değişmezlikten veya en azından değişmezlik yanılsamasını sunan bir veri tabanından elde edebileceğiniz faydalarla ilgileniyorsanız, Datomic'i kontrol edin.
Datomic , Rich Hickey tarafından Think Alaevent ile bağlantılı olarak icat edilmiş bir Veri Tabanıdır , mimariyi, hedeflerini, veri modelini açıkladıkları birçok video vardır. Arama infoq, özellikle biri Datomic, Veritabanını Değer olarak adlandırır . Çatışmalarda, Rich Hickey’in 2012’deki euroclojure konferansında verdiği bir açılış konuşmasını bulabilirsiniz. Confreaks.com/videos/2077-euroclojure2012-day-2-keynote-the-datomic-architecture-and-data-model
Vimeo.com/53162418 adresinde daha fazla gelişim odaklı bir konuşma var.
İşte stuart halloway'dan başka bir sayfa daha :.pscdn.net/008/00102/videoplatform/kv/121105techconf_close.html
- Datomic, 5-tuples [da, A, V, T, O] datums denilen zaman içindeki gerçeklerin bir veritabanıdır.
- E Varlık kimliği
- Varlıktaki bir Öznitelik adı
- V Özelliğin Değeri
- T İşlem Kimliği ile bunun için zaman fikriniz var.
- O Bir iddia işlemi (şimdiki veya mevcut değer), reddetme (geçmiş değer);
- EDN (Genişletilebilir Veri Notasyonu) adı verilen kendi veri formatını kullanır
- İşlemler ACID
- Datalog'yu sorgu dili olarak kullanır, hangi SQL + özyinelemeli sorgular olarak bildirilir. Sorgular veri yapılarıyla temsil edilir ve jvm dilinizle birlikte genişletin, clojure kullanmanıza gerek yoktur.
- Veri tabanı 3 ayrı hizmette (süreçler, makineler) ayrıştırılır:
- işlem
- Depolama
- Sorgu Motoru.
- Her bir hizmeti ayrı ayrı ölçeklendirebilirsiniz.
- Açık kaynak değil, fakat Datomic'in ücretsiz (biradaki gibi) sürümü var.
- Esnek bir şema belirtebilirsiniz.
- öznitelik kümesi açık
- istediğiniz zaman yeni özellikler ekleyin
- tanım veya sorguda sağlamlık yok
Şimdi, bilgi zaman içinde gerçekler olarak saklandığından:
- tek yaptığınız veri tabanına gerçekleri eklemek, onları asla silmezsiniz (yasalarca gerekli olmadıkça
- sonsuza dek her şeyi önbelleğe alabilirsiniz. Query Engine, uygulama sunucusunda bir bellek veri tabanı olarak yaşar (jvm dilleri için jvm dışındaki dillerin bir REST API'sine erişimi vardır.)
- Geçmişte zaman olarak sorgulayabilirsiniz.
Veri tabanı bir değerdir ve sorgu motorunun bir parametresi olan QE, bağlantıyı ve önbelleği yönetir. Db'yi bellekte bir değer olarak ve değişmez veri yapısını görebildiğiniz için, onu "gelecekteki" değerlerden yapılan başka bir veri yapısıyla birleştirebilir ve bunu asıl veritabanını değiştirmeden QE'ye ve gelecekteki değerlerle sorgulamaya aktarabilirsiniz. .
Kodq olarak adlandırılan Rich Hickey'den açık kaynaklı bir proje var, onu git modelini genişleten ve git nesnelerine referansları veri içermeyen bir veritabanında saklayan ve kodunuzun sorgularını yapan github Datomic / codeq içinde bulabilirsiniz. datomic kullanımı hakkında bir örnek görebilirsiniz .
Veriyi bir ACID NoSQL olarak düşünebilirsiniz; verilerle tabloları veya belgeleri veya Kv-mağazalarını veya grafiklerini modelleyebilirsiniz.