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.

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ü.
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ü.
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.


