Cassandra TTL ve Cassandra CQL Veri Türleri (Örnek)

⚡ Akıllı Özet

Cassandra Veri tipleri, her sütunun ne içerebileceğini tanımlar ve TTL (Yaşam Süresi), bir değerin otomatik olarak sona ermeden önce ne kadar süreyle geçerli olacağını kontrol eder. Bu sayfa, her CQL türünü listeler, sona erme mekanizmasını açıklar ve sona ermeyi takip eden "mezartaşı" davranışını ele alır.

  • 🔤 Tip Aileleri: CQL, veri türlerini metin, sayısal, tarih ve saat, tanımlayıcı ve koleksiyon kategorilerine ayırır.
  • 🔢 Sayısal Seçim: tinyint'ten varint'e kadar olan veri tipleri her türlü tamsayı genişliğini kapsarken, decimal veri tipleri para birimi için kesin hassasiyeti korur.
  • 🆔 UUID ve TimeUUID karşılaştırması: `timeuuid` bir zaman damgası içerir ve kronolojik olarak sıralar, bu nedenle zamana göre sıralanmış kümeleme sütunları için uygundur.
  • TTL Temelleri: Ekleme sırasında saniye cinsinden ayarlanan bir TTL değeri, belirtilen süre dolduktan sonra verileri otomatik olarak siler.
  • 🪦 Son Kullanma Tarihi Davranışı: Süresi dolmuş veriler bir mezar taşı haline gelir ve yalnızca sıkıştırma işleminden sonra fiziksel olarak silinir.
  • 🧊 Dondurulmuş Çeşitler: Bir koleksiyonu veya demeti dondurulmuş olarak işaretlemek, onu tamamen değiştirilmesi gereken tek bir değiştirilemez değer olarak saklar.

Cassandra TTL CQL Veri Tipleri

Cassandra Veri tipleri

Cassandra farklı veri türlerini destekler. Veri türlerini, sabitlerini ve açıklamalarını gösteren tablo buradadır.

CQL Türü Sabitler Açıklama
ascii Ekstra Tel ABD-Ascii karakter dizisi
bigint tamsayılar 64 bit imzalı uzun
damla lekeler Onaltılık sistemde rastgele baytlar
boole Booleans Doğru ya da yanlış
karşı tamsayılar Dağıtılmış sayaç değerleri 64 bit
tarih Tamsayılar, dizeler Zaman bileşeni içermeyen takvim tarihi
ondalık Tamsayılar, kayan sayılar Değişken hassas ondalık sayı
çift Tamsayılar, kayan sayılar 64 bit kayan nokta
süre Süre Aylar, günler ve nanosaniyeler süren bir zaman dilimi
şamandıra Tamsayılar, kayan sayılar 32 bit kayan nokta
dondurulmuş Tuple'lar, koleksiyonlar, kullanıcı tanımlı türler Çok parçalı bir değeri tek bir değiştirilemez veri bloğu olarak saklar.
inet Ekstra Tel IPv4 veya IPv6 formatındaki IP adresi
int tamsayılar 32 bitlik işaretli tamsayı
liste Sıralı elemanlar koleksiyonu
harita JSON tarzında anahtar ve değer çiftlerinden oluşan bir koleksiyon.
set Düzensiz, benzersiz öğelerden oluşan koleksiyon.
küçük tamsayı tamsayılar 16 bitlik işaretli tamsayı
metin Ekstra Tel UTF-8 kodlu dize
zaman Tamsayılar, dizeler Günün saati nanosaniye hassasiyetinde
zaman damgası Tamsayılar, dizeler Başlangıç ​​noktasından itibaren milisaniye cinsinden kodlanmış tarih ve saat.
zamanuuid UUID'ler Tip 1 UUID, gömülü zamana göre sıralanabilir.
Tinyint tamsayılar 8 bitlik işaretli tamsayı
tanımlama grubu Belirli bir türdeki alanlar grubu
kullanıcı kimliği UUID'ler Standart UUID
Varchar Ekstra Tel UTF-8 kodlu dize, metnin diğer adı.
varyant tamsayılar Rasgele hassas tamsayı

Bu listedeki üç seçenek, modelleme hatalarının çoğuna neden oluyor, bu yüzden bunları açıkça belirtmekte fayda var.

  • varchar'a karşı metin. Aynı türdenler. İki isim de olur, karıştırmanın hiçbir faydası olmaz.
  • Zaman damgası, timeuuid'ye karşı. Bir olayın ne zaman gerçekleştiğini kaydetmek için zaman damgasını kullanın. Birçok olayın aynı milisaniyeyi paylaştığı durumlarda kümeleme sütunu olarak timeuuid'yi kullanın, çünkü UUID zamana göre sıralama yaparken benzersizliği garanti eder.
  • ondalık sayı ile çift sayı arasındaki fark. Parasal değerler ondalık sistemde olmalıdır. Çift hassasiyetli sayılar, toplamlar boyunca biriken ikili yuvarlama hatasına yol açar.

A karşı Sütun özel bir kısıtlama taşır: bir tablo yalnızca sayaç sütunları veya normal sütunlar içerebilir, ikisini birden asla içeremez ve sayaç satırları eklenemez, yalnızca artırılabilir.

Cassandra Otomatik Veri Sona Ermesini kullanarak TTL (Yaşam Süresi)

Cassandra Verilerin otomatik olarak süresinin dolması için işlevsellik sağlar.

Veri girişi sırasında 'ttl' değerini saniye cinsinden belirtmeniz gerekmektedir. 'ttl' değeri verinin yaşama süresidir. Belirli bir sürenin sonunda veriler otomatik olarak kaldırılacaktır.

Örneğin ekleme sırasında ttl değerini 100 saniye olarak belirtin. Veriler 100 saniye sonra otomatik olarak silinecektir. Verilerin süresi dolduğunda, süresi dolan veriler bir mezar taşıyla işaretlenir.

Bir ödemesiz dönem için bir mezar taşı mevcuttur. Verilerin süresi dolduktan sonra veriler, sıkıştırma işleminden sonra otomatik olarak kaldırılır.

Sözdizimi

INSERT INTO KeyspaceName.TableName (ColumnNames)
VALUES (ColumnValues)
USING TTL TimeInSeconds;

Örnek E-posta

İşte Öğrenci tablosuna 100 saniyelik ttl değeriyle verinin eklendiği anlık görüntü.

Cassandra Otomatik Veri Sona Erme Tarihini kullanan TTL

INSERT INTO University.Student (rollno, name, dept, semester)
VALUES (3, 'Guru99', 'CS', 7) USING TTL 100;

İşte verilerin 100 saniye sonra otomatik olarak süresinin dolduğu ve verilerin otomatik olarak kaldırıldığı anlık görüntü.

Cassandra Otomatik Veri Sona Erme Tarihini kullanan TTL

Mevcut Verilerde TTL Değerini Kontrol Etme ve Değiştirme

Bir değerin TTL (yaşam süresi) değeri olduğunda, üç ek işlem daha kullanışlıdır ve her birinin yeni başlayanları şaşırtacak bir davranışı vardır.

Birincil anahtar olmayan herhangi bir sütunun kalan ömrü, TTL fonksiyonu ile okunabilir.

SELECT name, TTL(name) FROM University.Student WHERE rollno = 3;

Boş sonuç, sütunun geçerlilik süresinin ayarlanmadığı anlamına gelir. Birincil anahtar sütunları bu şekilde sorgulanamaz, çünkü TTL (geçerlilik süresi) anahtara değil değerlere bağlıdır.

Mevcut bir değere, güncellenerek yeni bir TTL (yaşam süresi) verilebilir; bu işlem, geri sayımı o andan itibaren sıfırlar.

UPDATE University.Student USING TTL 600
SET name = 'Guru99' WHERE rollno = 3;

Tablo genelinde varsayılan değer, bu koşulun her ifadede tekrarlanmasını önler.

ALTER TABLE University.Student WITH default_time_to_live = 86400;

İki sonuç ortaya çıkar. Birincisi, TTL satır başına değil, sütun başına uygulanır; bu nedenle TTL olmadan bir sütunu güncellemek, diğer sütunların süresi dolduktan sonra o sütunu geride bırakarak kısmen doldurulmuş bir satır oluşturur. Tüm ekleme işlemine TTL uygulamak bunu önler. İkincisi, her süre dolma işlemi bir silme işlemi (tombstone) oluşturur; bu nedenle milyonlarca satırın aynı anda süresinin dolduğu bir tablo, sıkıştırma işlemi bunları temizleyene kadar okuma işlemlerini yavaşlatır. Bu tür tablolar için TimeWindowCompactionStrategy kullanmak, SSTable'ların satır satır sıkıştırılması yerine, tümünün bir kerede silinmesine olanak tanır.

Koleksiyon içindeki öğelere de süre sonu özelliği uygulanabilir; bu konu ilgili bölümde ele alınmıştır. Cassandra koleksiyon öğretici.

SSS

Hayır. TTL, anahtar olmayan değerlere uygulanır. Bir satır, ancak anahtar olmayan her sütun süresi dolduktan sonra kaybolur; bu nedenle TTL'yi tüm ekleme işlemine uygulamak güvenilir bir yaklaşımdır.

Tavan değer 630,720,000 saniye, yani yirmi yıldır. Bu değerin üzerindeki değerler reddedilir, bu nedenle daha uzun süreli saklama işlemleri uygulama düzeyinde bir temizleme işlemiyle ele alınmalıdır.

Değerin tamamı her zaman birlikte yazıldığında veya birincil anahtarın bir parçasını oluşturduğunda dondurun. Dondurulmuş bir koleksiyonun tek tek öğeleri güncellenemez.

Genellikle bariz durumlarda evet, ancak sıralama için timeuuid gerektiğinde para birimi ve uuid için çift sayı öneriliyor. Sayısal hassasiyet ve zaman sıralama seçeneklerini manuel olarak kontrol edin.

Veri saklama politikasını TTL değerlerine dönüştürebilir ve bir sıkıştırma stratejisi önerebilir. Süresi dolmuş veriler kurtarılamayacağından, öncelikle yasal saklama süresini doğrulayın.

Bu yazıyı şu şekilde özetleyin: