Ana içeriğe geç
Version: 1.0.1

What is Data Modeling?

İyi tasarlanmış bir veri modeli, uygulamaların performansını artırabilir, kaynakların daha verimli kullanılmasına olanak tanır ve iş hedeflerine ulaşmaya yardımcı olabilir. Bir veri modeli tasarlarken, verilerin bir Ignite cluster’ına nasıl dağıtıldığını ve verilere erişmenin farklı yollarını anlamak önemlidir.

Verilerin Ignite'ta nasıl depolandığını ve kullanıldığını anlamak için, bir kümedeki verilerin fiziksel organizasyonu ile verilerin mantıksal temsili, yani kullanıcıların uygulamalarında verilerini nasıl görecekleri arasında bir ayrım yapmak yararlıdır.

  • Fiziksel düzeyde, her veri girişi (cache girişi veya tablo satırı) binary bir nesne biçiminde saklanır ve tüm veri seti, partition adı verilen daha küçük kümelere bölünür. Partititon’lar, tüm node’lar arasında eşit olarak dağıtılır. Verilerin partitionlara ve partitionların düğümlere ayrılma şekli affinity function tarafından kontrol edilir.
  • Mantıksal düzeyde, veriler, üzerinde çalışılması kolay ve son kullanıcıların uygulamalarında kullanmaları için uygun bir şekilde sunulmalıdır. Ignite, verilerin iki farklı mantıksal temsilini sağlar: key-value cache ve SQL tabloları (schema). Bu iki temsil farklı görünse de gerçekte eşdeğerdir ve aynı veri setini temsil edebilir.

Ignite'ta SQL tablosu ve key/value cache kavramları aynı (dahili) veri yapısının iki eşdeğer temsilidir. Key/Value API'sini veya SQL statementlarını ya da her ikisini kullanarak verilere erişilebilir.

Key-Value Cache vs. SQL Table

Cache, key/value API'si yoluyla erişilebilen bir key/value çiftleri koleksiyonudur. Ignite'daki bir SQL tablosu, bazı ek kısıtlamalarla birlikte geleneksel RDBMS'lerdeki tablo kavramına karşılık gelir; örneğin, her SQL tablosunun bir birincil anahtarı olmalıdır.

Birincil anahtar içeren bir tablo, birincil anahtar sütununun anahtar görevi gördüğü ve tablonun geri kalanının nesnenin (değer) alanlarını temsil ettiği bir key/value önbelleği olarak sunulabilir.

cache_table.png

Bu iki temsil arasındaki fark, verilere erişme şeklindedir. Key/value cache, desteklenen programlama dilleri aracılığıyla nesnelerle çalışmaya olanak tanır. SQL tabloları, geleneksel SQL sözdizimini destekler ve örneğin mevcut bir veritabanından geçiş yapmaya yardımcı olabilir. İki yaklaşım birleştirilebilir ve kullanım durumuna bağlı olarak biri veya her ikisi birden kullanılabilir.

Cluster’ı kurup çalıştırdıktan sonra bile dinamik olarak hem key/value cache’leri hem de SQL tabloları oluşturulabilir.

Binary Object Format

Ignite, veri girişlerini binary objects adı verilen belirli bir biçimde depolar. Bu serialization formatı çeşitli avantajlar sağlar;

  • Bütün nesneyi deserialize etmek yerine nesnenin belirli fieldlarını deserialize edip okuma olanağı sağlar.
  • Aynı türdeki nesnelere yeni field’lar ekleyebilir veya kaldırılabilir. Nesnelerin farklı versiyonlarındaki hallerini tutmayı kolaylaştırır.
  • Sınıf tanımlamaları yapmadan tür adına dayalı yeni nesneler oluşturmaya olanak tanır, dolayısıyla dinamik tür oluşturmaya olanak tanır.
  • Platformlar arası uyumlu çalışabilmeyi sağlar.

Binary nesneler, yalnızca varsayılan binary marshaller kullanıldığında kullanılabilir.