Cassandra'da gelişmiş tablo işleme

İçindekiler
Geçmiş eğitimlerde tamamen girdiğimiz CQL ve yönetmemize nasıl yardımcı olduğu Kassandraiçin temel işlemleri gördük. anahtar boşluklar ve Cassandra'daki tablolar, Veritabanında bir başlangıç ​​yapısı oluşturmak için bunları uygulayabiliriz, ancak Cassandra'dan en iyi şekilde yararlanmak için bilmemiz gereken önemli miktarda gelişmiş kavram vardır.
Bir şekilde adlandırılacak bu kavramlar veya özellikler, tablolarımızda farklı işlevler elde etmemize izin vererek, bize diğerlerinden çok daha büyük bir dizi olasılık sunar. NoSQL Veritabanı.
Daha önce bazı tablolar oluşturduk ve sütunlarımız için metin veya tarih gibi değerler kullandık, ancak hepsi bu kadar değil. CQL mevcutsa, operasyonlarımız için sahip olduğumuz veri türlerini görelim:
asciUS-ASCII karakter dizisi.
büyük64 bit uzunluğunda bir tam sayı değeri.
damlaKomut konsolunda onaltılık olarak ifade edilen veri türü CQLEk olarak, doğrulaması yoktur ve keyfi baytlara dayanır.
booleDeğerlerinin doğru veya yanlış olabileceği klasik Boolean veri türü.
tezgahcounter, ilişkisel dünyadan gelen bizler için yeni bir veri türüdür ve 64-bit dağıtılmış olduğunu belirtir.
ondalıkTanıyabildiğimiz, bilgilerimiz için bize ondalık kesinlik sağlayan başka bir veri türü.
çiftKayan nokta veri türü, ancak 64 bit tabanlı.
batmadan yüzmekBir önceki gibi, kayan noktalı bir veri türüdür ancak 32 bite dayalıdır.
inetBu tip aynı zamanda oldukça özel ve çok kullanışlıdır ve bir IP adresinin bir dizi karakterini saklamamıza izin verir, her iki formatı da destekler. IPV4 Ne IPV6.
int32 bite kadar sayıları destekleyen klasik tamsayı veri türü.
listeCassandra'da ilk çıkışını yapan ve sıralı bir öğe koleksiyonunu saklamamıza izin veren başka bir veri türü.
haritaListe gibi, başka bir yeni veri türüdür ve uygulama geliştirme için çok yararlı olan ilişkisel bir dizi depolamamıza izin verir.
ayarlamakListe veri türüne benzer şekilde, belirli bir sıra olmadan bir öğe koleksiyonunu depolar.
MetinKodlanmış bir karakter dizisini saklar.
zaman damgası8 baytlık bir tam sayı olarak kodlanmış, tarih ve saati depolayan veri türü.
çeşitRasgele tamsayılar için hassas veri türü.
Gördüğümüz gibi, ilişkisel dünyadan geliyorsak tanıyabileceğimiz birçok veri türü vardır, örneğin ilk kez göreceğimiz ve bizi farklı kılan diğerleri gibi. Kassandra diğer Veritabanlarının üzerinde öne çıkıyor.
İçinde Kassandra sayesinde sadece tablolarımız için veri türlerine sahip değiliz. CQL Bakım ve geliştirme görevlerinde bize çok yardımcı olan Veritabanı özelliklerimizdeki tablolara atayabiliriz, bakalım elimizde neler var.
Önbelleğe almakBu özellik bize önbellek optimizasyonu sağlar. Bu mülk için mevcut olan seviyeler şunlardır: orada ya da herkes, key_only ya da sadece anahtarlar, rows_only veya sadece satırlar ve Yok veya hiçbiri. Tüm seçenekler oldukça kullanışlıdır, ancak satır_yalnızca olarak dikkatli kullanılmalıdır Kassandra bu seçenek kullanıldığında belleğe önemli miktarda veri koyun.
Yorumİlişkisel modelde bulunan ve yöneticiler veya geliştiriciler tarafından tablolarda not almak ve önemli ayrıntıları vurgulamak için kullanılan bir seçenek.
SıkıştırmaBu özellik, yönetimin stratejisinin tanımlanmasına izin verir. nane, aşağıdaki türlerden olabilir: İlk BoyutKatmanlı tablo bir sınırı geçtiğinde tetiklenen bu stratejiyi kullanmanın avantajı, yazma performansını düşürmemesidir, ancak dezavantajı, zaman zaman diskteki verinin iki katı boyutunu kullanması ve performansın düşmesine neden olmasıdır. okuma. İkinci strateji ise Seviyeli Sıkıştırma ve zaman içinde farklı düzeylerde çalışır, tabloları daha uzun olanlarla birleştirerek oldukça iyi bir okuma performansı sağlar.
SıkıştırmaBu özellik, bilgilerin nasıl sıkıştırılacağını belirler. Hız veya uzayda avantajlar elde etmeyi seçebiliriz, burada hız ne kadar yüksek olursa, disk alanından o kadar az tasarruf sağlanır.
Gc_grace_saniyeBu özellik, mezar taşlarından bilgilerin kaldırılması için bekleme süresini tanımlar. Varsayılan olarak 10 gündür.
Populate_io_cache_on_flushBu özellik varsayılan olarak devre dışıdır ve yalnızca tüm bilgilerin önbelleğe sığacağını umarsak etkinleştirmeliyiz.
Read_repair_chanceYeterli sayıya ulaşılmadığında bilgilerin onarılma olasılığını belirten 0 ile 1,0 arasında bir sayı belirten çok ilginç bir özellik. Varsayılan değer 0.1'dir.
Replicate_on_writeBu özellik yalnızca tür tabloları için geçerlidir tezgah. Tanımlandığında, replikalar, belirtilen tutarlılık seviyesini yok sayarak, etkilenen tüm replikalara yazar.
Bu nedenle, hem veri türleri hem de özellikler düzeyinde sahip olduğumuz şeyi zaten biliyoruz, o zaman öğrenilen bazı şeyleri tablolarımıza uygulamanın zamanı geldi. Kassandra.
İlk olarak yorum özelliğini uygulayacağımız basit bir tablo oluşturacağız, bunun için kullanacağımız sözdizimini görelim:
 CREATE TABLE makaleleri (metin başlığı, metin içeriği, metin kategorisi, BİRİNCİL ANAHTAR (başlık)) yorum İLE yorum = 'Makale bilgilerini saklamak için tablo';
Komut konsolumuzu açıyoruz CQL ve bahsi geçen özellik ile tablomuzu oluşturuyoruz, bakalım nasıl görünüyor:

Bildiğimiz gibi komut konsolu herhangi bir hata olmaması dışında bir şey döndürmüyor fakat bu değişiklikleri görmek istiyorsak şuraya gidebiliriz. Operasyon Merkezi ve her şeyin doğru gittiğini doğrulayın:

BÜYÜT

Gördüğümüz gibi yorumumuzu ve diğer özellikleri varsayılan değerleri ile görebiliriz. Aşağıdaki özelliklerin geri kalanının tanımından bahsetmek önemlidir. Kassandra sözdizimini kullanmak, önceki örnekte gördüğümüz gibi oldukça basittir. İLE BİRLİKTE sorunsuz yapabiliriz.
Özellikleri tanımlayacağımız başka bir örnek yapacağız. sıkıştırma Y sıkıştırma ancak bunun için kullanımları için bir dizi alt seçeneğe sahip olduklarını bilmek önemlidir, hadi bakalım sıkıştırma bilmemiz gereken:
Kararlı_sıkıştırmaBu seçenek kullanılacak sıkıştırma algoritmasını belirtir, değerleri şunlardır: LY4Compressor, SnappyCompressor, Y SöndürKompresör.
Chunck_length_kbTablolar bloklarla sıkıştırılır. Daha uzun değerler genellikle daha iyi sıkıştırma sağlar ancak okunacak bilgilerin boyutunu artırır. Varsayılan olarak bu seçenek 64 kb olarak ayarlanmıştır.
Sıkıştırma seçeneklerini manipüle etmek, birçok uygulama dahil olmak üzere önemli bir performans artışına yol açabilir. Kassandra Bu varsayılan değerlerle birliktedirler, ancak mükemmellik için bu değerleri kullanmak gerekir. Şimdi ne bilmemiz gerektiğine bakalım sıkıştırma:
EtkinleştirilmişVarsayılan olarak tüm özelliklerin sahip olmasına rağmen özelliğin tabloda çalışıp çalışmayacağını belirler. sıkıştırma etkinleştirilmiş.
SınıfBurada tabloları işlemek için strateji türünü tanımlayacağız.
min_thresholdBu değer strateji ile kullanılabilir BoyutKatmanlı y, bir sıkıştırma işlemini başlatmak için gereken minimum tablo sayısını temsil eder. Varsayılan olarak 4'te tanımlanır.
max_thresholdStratejide aynı şekilde mevcut BoyutKatmanlı y, kompaktta işlenen maksimum tablo sayısını tanımlar. Varsayılan olarak 32'de tanımlanır.
Bunlar, bu özellikler için en önemli seçeneklerden bazılarıdır, bahsetmek önemli olan, bu seçeneklerin tanımı için bir sözdizimi kullanmamız gerektiğidir. JSON Geçerli olması için, bu iki özelliğin dahil edilmesine ilişkin bir örnek görelim:
 CREATE TABLE table_for_properties (int kimliği, metin adı, metin özelliği, değişken numarası, BİRİNCİL ANAHTAR (id)) İLEcompression = {'sstable_compression': 'DeflateCompressor', 'chunk_length_kb': 64} ANDcompaction = {'class': 'SizeTieredCompactionStrategy' 'min_threshold': 6};
Gördüğümüz gibi sıkıştırma türünü değiştirdik ve bunun için boyutu tanımladık, ayrıca için sıkıştırma değerle olağan stratejiyi bıraktık sınıf ve tanımladık min_threshold 6 gibi varsayılan değeri şu şekilde artırdı, bitirmek için komut konsolumuzda çalıştırdığımızda bunun nasıl göründüğünü görelim:

Son öğreticide, birden fazla birincil anahtar tanımlamanın bir sonucu olarak, bunların şu şekilde oluşturulduğunu görebildik. kümeleme anahtarları ve bize yolu söyle Kassandra bilgileri sıralar, varsayılan olarak sıra artan düzende tanımlanır ve azalan düzende bir sorgulama yapmak performans sorunlarına neden olabilir, ancak Cassandra'nın herhangi bir sorun için bir çözümü vardır ve cümle ile birliktedir. KÜMELEME ***** TARAFINDAN. Nasıl kullanılacağını görelim.
 CREATE TABLE order_users (kullanıcı metni, tarih zaman damgası, maaş şamandırası, departman metni, süpervizör metni, BİRİNCİL ANAHTAR (kullanıcı, tarih)) KÜMELEME ***** BY (tarih DESC);
Komut konsolunda söz dizimimizi çalıştıralım ve neye benzediğini görelim:

Gördüğümüz gibi, bu sorunu basit bir satırla çözmek oldukça kolaydı, ama daha da önemlisi, tabloları işleme konusunda bilgimizi genişletebildik. Kassandraiçinde optimal tablo oluşturma için bilmemiz gereken her şeyi ele aldığımız bu öğreticiyi bitirdiğimiz Kassandra.
wave wave wave wave wave