Google'ın Bigtable'ı: En Yaygın Olarak Kullanılan Sütun Yönelimli Veri Deposu

Yayınlanan: 2022-12-19

Bigtable, Google tarafından oluşturulan sütun yönelimli bir veri deposudur. Büyük miktarda veriyi yüksek derecede esneklikle işlemek için tasarlanmıştır. Bigtable, Google tarafından on yılı aşkın bir süredir kullanılmaktadır ve Gmail, Google Haritalar ve YouTube dahil birçok hizmetinin temelini oluşturmaktadır. Bigtable ilk sütun odaklı veri deposu olmasa da kesinlikle en yaygın kullanılan ve en iyi bilinenidir.

Bu yazımızda Bigtable tarafından geliştirilen üç boyutlu NoSQL depolama modelini inceleyeceğiz. Doğru yapılandırıldığını doğrulamak için önce teorik olarak nasıl uygulandığına bakacağız ve ardından bunu yapmak için Node.js istemcisini kullanacağız. Bigtable'daki depolama modeli, onu benzer bir veritabanında bulabileceğinizden farklıdır. Bir satır/sütun kombinasyonundaki birden fazla hücre, hücre başına bir zaman damgasına göre sıralanabilir. Hücreleri keyfi bir sırayla kaydetmek yerine, hücrelerin sıralı bir sırayla kaydedilmesini sağlamak için her hücrenin bir değeri ve bir zaman damgası vardır. Bu örnekte, Google Cloud Bigtable'ı oluşturmak için Node.js ve düz JavaScript kullanacağız. Bu makalede, kodu kullanarak yeni bir Bigtable örneğinin nasıl oluşturulacağını ele alacağız.

Temiz bir ortam yaratarak, üzerine okuyup yazarak ve ardından onu yıkarak başlıyoruz. Node.js Bigtable istemcisini kullanarak kod çalıştırırken, Node.js Bigtable istemcisi bir İzin Reddedildi hatasına neden olabilir ve Cloud Bigtable Yönetici API'sini etkinleştirmek için bir bağlantı oluşturabilir. Ayrıca, Bigtable Yöneticisi rolünü üstlenmek için GCP projenizde ayrı bir hizmet hesabı oluşturmalısınız. Bir Bigtable tablosu oluşturmak için önce veritabanının bir örneğini ve bir tablo kümesi oluşturmalıyız. Bunu yapmak için Node.js istemcisinde bir tablo kimliği ve bir sütun ailesi tanımlamanız yeterlidir. Bir veritabanında Bigtable kullanılarak basit satırlar oluşturulabilir. Verileri sorgulamanın tek yolu, belirli bir satırı veya bir satır grubunu sorgulamak için satır tuşunu kullanmaktır.

Alım sürelerinin, sürümlerin depolanma sırası üzerinde bir etkisi olmasa da, nasıl depolandıkları üzerinde etkileri vardır. Tüm sıra anahtarının sağlanması gerekli değildir; sadece bir önek yeterlidir. Bigtable'dan birden çok satırı sorgulamanız gerektiğinde, her zaman akışı kullanmanızı öneririm. Akışı kullanırken, Bigtable'ın satırları göndermeden önce verileri sunucuda arabelleğe alması gerekmez, bu da daha hızlı performans sağlar. Filtreler, yalnızca belirli aile adlarına sahip sütunları veya belirli niteleyici ölçütlere sahip sütunları döndürerek hücre sürümlerini sınırlamak için kullanılabilir. Bu, özellikle saklanacak çok sayıda sürümünüz varsa kullanışlıdır, ancak belirli amaçlar için yalnızca en yeni sürüm gereklidir. Filtreler öncelikle, sorgu performansını artırmak için sorgulanan ve gönderilen veri miktarını azaltmak için kullanılır.

Diğer bir deyişle Cloud Bigtable, analitik ve operasyon iş yükleri için tasarlanmış bir NoSQL veritabanıdır . Bu veritabanı sistemi, sütunlu bir veritabanı kullanan HBase yerine Hadoop kullanan platformlar arası bir melezdir. Bir bulut bigtable, 10 MB'tan daha düşük bir kapasiteye sahip, yüksek aktarım hızına ve ölçeklenebilirliğe sahip uygulamalara güç sağlamak için kullanılabilir.

Apache Cassandra, ScyllaDB, Apache HBase, Google BigTable ve Microsoft Azure CosmosDB, geniş sütunlu depolara örnektir.

Tablolar, anahtar/değer depolaması açısından ilişkisel veritabanlarıyla aynı değildir. İşlemler yalnızca bir kez gerçekleştirilebilir ve birleştirmeler desteklenmez.

Google Bigtable Bir Nosql Veritabanı mı?

Google Bigtable Bir Nosql Veritabanı mı?
Görsel kaynak: slidesharecdn.com

Google Bigtable, büyük miktarda veriyi depolamak ve yönetmek için tasarlanmış bir NoSQL veritabanıdır. Bigtable, sütun odaklı bir veritabanıdır; bu, verilerin satırlar yerine sütunlar halinde düzenlendiği anlamına gelir. Bu, web günlükleri veya sosyal medya verileri gibi sürekli değişen verileri depolamak için çok uygun hale getirir. Bigtable aynı zamanda yüksek düzeyde ölçeklenebilirdir, bu da büyük miktarda veriyi kolayca işleyebileceği anlamına gelir.

Bu NoSQL veritabanı, çok çeşitli veri türlerini depolayabilir ve son derece kararlıdır. Aynı zamanda hem parçalama hem de replikasyonu yöneterek veritabanının yüksek düzeyde kullanılabilir ve güvenilir olmasını sağlar. Google Analytics, web indeksleme, MapReduce ve Google Haritalar, Google Kitaplar, Arama Geçmişim, Google Earth, Blogger.com, Google Code Hosting ve Google dahil olmak üzere birçok Google uygulaması bunu kullanır. veri öğesi sayısı, Datastore harika bir seçimdir.

Bigtable'da Veriler Hangi Sırayla Depolanır?

Bigtable'da Veriler Hangi Sırayla Depolanır?
Görsel kaynak: janusgraph.org

Bigtable'da verilerin depolandığı belirli bir sıra yoktur. Veriler, belirli verilere erişimi zorlaştıran rastgele bir sırada saklanır.

Google'ın Bigtable'ı: Yalnızca Veri Depolamak İçin Değil

Veriler, igtable içinde belirli bir sıraya yerleştirilemez. Bigtable satır yönelimli bir veritabanı olduğundan, bir satırdaki tüm veriler sütunlar halinde düzenlenir ve ardından bir sütun gelir. Veriler ters kronolojik sırayla saklandığından, en yeni değeri istemek basit ve hızlıdır, ancak en eski değeri istemek zor ve zaman alıcıdır.
Verileriniz, Bigtable'ın Colossus'u kullanmasının bir sonucu olarak, Google'ın veri merkezlerinde barındırılan Google'ın dahili, uzun ömürlü dosya sistemi Colossus'ta tutulur. Bigtable'ın kullanımı ücretsizdir ve bir HDFS kümesi veya başka bir dosya sistemi kullanmanıza gerek yoktur.
Bir dış veri kaynağına yönelik bir sorgu, Combine komutuyla kalıcı bir tablo oluşturulmadan gerçekleştirilebilir: Sorgu içeren bir tablo tanımlama dosyası. Bir sorgunun yanı sıra bir satır içi şema tanımı da vardır. Sorgu içeren bir JSON şema tanımı dosyası.

Bigtable ve Veri Deposu

Bigtable ve Datastore arasında birkaç önemli fark vardır. İlk olarak, Bigtable sütun yönelimli bir veri deposuyken, Datastore satır yönelimlidir. Bu, Bigtable'da verilerin sütunlar halinde, Datastore'da ise satırlar halinde düzenlendiği anlamına gelir. İkincisi, Bigtable'ın bir işlem kavramı yoktur, ancak Datastore'da vardır. Bu, Bigtable'da değişiklikleri önceki bir duruma geri alamayacağınız, ancak Datastore'da yapabileceğiniz anlamına gelir. Son olarak, Bigtable yüksek verim ve düşük gecikme için tasarlanırken, Datastore yüksek kullanılabilirlik ve ölçeklenebilirlik için tasarlanmıştır.

Google bulut veritabanlarını oluşturmak için hangi bulut veri deposu kullanılabilir? Bigtable, karmaşık arka uç iş yüklerine sahip büyük iş yüklerini desteklediğinden, daha büyük kuruluşlar ve işletmeler için tasarlanmıştır. Daha kısıtlayıcı sorgulama dili GQL kullanan SQL'in aksine, veri depoları, varlık grupları olarak bilinen veri alt kümeleri üzerinde ACID işlemleri gerçekleştirir (gerçi sorgu dili GQL çok daha açık uçludur). Google Cloud Datastore ve Google Cloud Bigtable, bir dizi farklı özelliğe sahip iki farklı hizmettir. Ayrıca aşağıdaki görseldeki bilgiler size uygun servis sağlayıcıyı seçmenizde yardımcı olabilir. Yukarıdaki yanıtların yanı sıra Coursea Google Cloud Platform Big Data and Machine Learning Fundamentals ders kitabında ele alınanlar bu makale için kılavuzum olacak.

Bigtable ve Datastore Arasındaki Fark Nedir?

Veri deposu ve veritabanı arasındaki fark nedir? Büyük tablo ve veri deposu sırasıyla yüksek hacimli veri işleme ve analitik için tasarlanırken, veri deposu yüksek değerli işlemsel veriler için tasarlanmıştır. Datastore, geleneksel SQL standardına uymadığı ve verileri daha esnek ve ölçeklenebilir bir şekilde tutmasına izin verdiği için NoSQL veritabanı olarak da bilinir. Google Bigtable ne tür bir veri deposudur? Bigtable depolama modeli, verileri , anahtar ve değer eşlemelerine göre sıralanmış, büyük ölçüde ölçeklenebilir tablolarda depolar. Bir tablo, her biri tek bir varlığı tanımlayan satırlardan ve her biri kendi değerine sahip sütunlardan oluşur. Veri deposu kullanımdan kaldırıldı mı? Cloud Datastore API v1beta3 piyasaya sürüldüğü için artık mevcut değil. Bununla birlikte, Cloud Datastore ürünü tamamen işlevseldir ve desteklenir.

Büyük Tablo Veritabanı

Bigtable, çok büyük bir boyuta ölçeklendirmek üzere tasarlanmış, yapılandırılmış verileri yönetmek için dağıtılmış bir depolama sistemidir: binlerce emtia sunucusunda petabaytlarca veri. Bigtable, sütun odaklı bir veritabanıdır; bu, verilerin satır yerine sütunlara göre depolandığı anlamına gelir.

Tablo, milyarlarca satıra ulaşabilen satır ve sütunlardan oluşan seyrek, yoğun nüfuslu bir yapıdır. Bigtable, büyük miktarda veriyi düşük gecikmeyle depolamak için mükemmel bir seçimdir. Düşük gecikmede yüksek okuma ve yazma verimini desteklediği için MapReduce işlemleri için uygun bir veri kaynağıdır. Bir Bigtable tablosu kullanılırken, sorguları kolaylaştırmak için tablet olarak bilinen bitişik satır bloklarına bölünür. Google'ın kullandığı Colossus isimli bir dosya sisteminde tabletler SSTable formatında saklanmaktadır. Bigtable düğümü , Bigtable örneğinin bir parçası olan her tabletin bir alt kümesidir. Bir kümeye düğüm eklemek, işleyebileceği eşzamanlı isteklerin sayısını artırabilir.

Bir satır, sütun ailesi, sütun zaman damgası ve anahtarın birleşimi olan bir dizi anahtar veya değer girişi içerir. Bigtable, tüm verileri aynı şekilde ele alır: ham bayt dizeleri gibi. Bigtable mutasyonları sıralı olarak sakladığından ve düzenli olarak sıkıştırdığından, belirli bir zamanda depolanabilecek mutasyon sayısı daha fazla depolama alanı gerektirir. Bigtable, otomatikleştirilmiş gelişmiş bir algoritma kullanarak verilerinizi sıkıştırır. Delesyonlar aslında yeni mutasyon türleri olduğundan, kısa vadede daha fazla depolama alanı gerektirirler. Google'ın tescilli depolama yöntemleri, standart HDFS üç yollu çoğaltmayla elde edilenleri aşan veri dayanıklılığına ulaşmasını sağlar. Bigtable tablolarına erişimi yönetmenin yanı sıra, Google Cloud projenizin Kimlik ve Erişim Yönetimi (IAM) bölümünde kullanıcılara roller atayarak diğer Google Cloud hizmetlerine erişimi yönetebilirsiniz. Google Cloud'un varsayılan şifreleme politikasına göre, buluttaki tüm veriler, şifrelenmiş verilerimiz için kullandığımız aynı sağlamlaştırılmış anahtar yönetim sistemleri kullanılarak beklemedeyken şifrelenir. Bir yedeği kullanarak, bir tablonun şemasının ve verilerinin bir kopyasını kaydedebilir ve ardından bu veri kopyasını gelecekte yeni bir tabloya geri yükleyebilirsiniz.

Bigtable Vs Cassandra

Cassandra ve Bigtable, hangi işleme düğümünün okuma ve yazma işlemlerini gerçekleştirmesi gerektiğini belirlemek için farklı yöntemler kullanır. Cassandra'da bölüm anahtarına anahtar denirken, Bigtable'da sıra anahtarına anahtar denir. Cassandra için yük dengeleme ilkesi, sürecin bir parçası olarak müşteri tarafından gözden geçirilmelidir.

Dağıtılmış bir veritabanı, birkaç kişi tarafından paylaşılan bir veritabanıdır. Bu şirket, sisteminde çok boyutlu anahtar/değer depoları barındırarak saniyede on binlerce sorguyu (QPS) işlemesine olanak tanır. Bu belgenin amacı, iki veritabanı sistemini karşılaştırmak ve karşılaştırmaktır. Bigtable'ın temel özellikleri şunları içerir: Yapılandırılmış Veriler için Dağıtılmış Depolama Sistemi belgesi oluşturuldu. Bigtable, bir veri kümesi için aralık yeniden dengelemenin gerekli olduğunu belirlerse, depolama katmanı işleme katmanından ayrı olduğu için işleme düğümünün veri aralıklarını değiştirmesi kolaydır. Bigtable, topolojilerde dört adede kadar kümeden oluşan coğrafi olarak dağıtılmış kümelerde eşzamansız çoğaltmayı desteklemek için de kullanılabilir. Cassandra'nın hata toleransı, ayarlanabilir tutarlılık düzeyiyle bağlantılıdır.

Bir veri çoğaltma topolojisi stratejisi yapılandırarak coğrafi çoğaltmayı tanımlayabilirsiniz. Genelde aQUORUM (veya bazı veri merkezlerinde LOCAL_QUORUM) ayarı kullanılır. Başarılı sayılması için, bir işlemin tutarlılık düzeyi ayarının, koordinatör düğüme yanıt veren bir kopya düğüm çoğunluğu ile karşılanması gerekir. Veri merkezi ve raf yapılandırmalarını kullanan Cassandra'nın replikaları, geleneksel replikalara kıyasla daha fazla strese dayanabilir. Okuma ve yazma işlemlerini yürütürken topoloji, tutarlılığı garanti etmek için hangi düğümlerin gerekli olduğunu belirler. Bir Bigtable örneği, tek bir küme veya en fazla dört büyük kopyadan oluşan bir grup içerebilir. Bigtable ve Cassandra, geniş sütun depoları olan NoSQL veri depolarıdır.

Bigtable'ın satır anahtarı, bir tablodaki genel verileri sıraya göre sıralamak için kullanılır. Bigtable'ın düğümleri, Bigtable'ın Düğümler özelliğinin bir parçası olarak tabletler olarak da bilinen anahtar aralıklar için düğüm sorumluluğunu otomatik olarak dengeler. Bir müşterinin Bigtable hizmeti , gönderdiği sütun veri türlerini zorlamaz. Bigtable'da bir tablodaki her sütuna bir aile adı atanır. Tabloların sıklıkla daha fazla sütun ailesi olmasına rağmen (tablo başına maksimum sütun sayısı 100'dür), her tablo en az bir sütun ailesi gerektirir. Satır anahtarı kesişimi iki hücreden oluşur (sütun niteleyicisiyle birleştirilmiş bir sütun ailesi). Cassandra ve Bigtable'da, okuma ve yazma işlemleri için işleme düğümünü seçmeye yönelik bir yöntem vardır.

Cassandra'da bölüm anahtarı tanımlanırken, Bigtable'da satır anahtarı kullanılır. Çoklu küme ilkesi gibi veri merkezlerinin farkında olan bir yük dengeleme ilkesi yük devretme potansiyeli sağlar. Her iki veritabanı da bir yazmayı bitirmek için benzer bir yöntem kullanır ve hız için optimize edilmiştir. Veriler, değişmez olan SSTable dosyaları aracılığıyla iki veritabanında depolanır. Cassandra'da koordinatör, birkaç kopya yanıt vermeden önce müşteriye yazmanın tamamlandığını bildirmelidir. Her satır anahtarı yalnızca bir düğüme atandığından, Bigtable'da başarılı bir yazma yalnızca bir düğümden gelen yanıtla onaylanabilir. Her iki veritabanındaki hücreler birleştirilmiş SSTable'a dahil edilmeyebilir.

Bir CQL sorgusundaki WHERE yan tümcesi nedeniyle, Cassandra'da birden fazla satır döndürmek imkansızdır. Bigtable'da yalnızca anahtar aralığından sorumlu düğüme danışılması gerekir. İşleme düğümünde okunabilecek veri miktarını sınırlamak mümkündür. Sıkıştırma aşaması sırasında, SSTable'lar düzenli olarak birleştirilir ve Bigtable ile Cassandra'da depolanan veriler bunlarda depolanır. Her hücre için zaman damgası sürümlerinin sayısını yöneten bir kural yoktur, ancak başka satır boyutu sınırları olabilir. Veri dayanıklılığı garantileri, Colossus'un çoğaltma sistemi tarafından sağlanmaktadır. Bigtable, Cassandra gibi, birçok yaygın programlama dili için bir komut satırı arabirimine ve istemci kitaplıklarına sahiptir.

Bigtable'da her düğüme bir SSTable atanır ve içinde depolanan veriler o düğüm tarafından sunulur. Bir Cassandra kümesini boyutlandırırken, Bigtable'da yaptığınız gibi depolama kopyalarını hesaba katmanız gerekmez. Katı hal sürücüleri (SSD) veya sabit disk sürücüleri (HDD), Bigtable bulut sunucuları için en sık kullanılan depolama türleridir. Cassandra'nın gösterdiği gibi, hataya dayanıklılık elde etmek için depolama yoğunluğunda herhangi bir kayıp olmaz. İş yükü gereksinimlerini minimum çaba ve minimum kesinti süresiyle karşılamak için bir Bigtable örneğini ölçeklendirmek mümkündür. Yalnızca dört küme olsa da, her küme dünyanın her yerinde desteklenen herhangi bir bulut bölgesinde oluşturulabilir. Google, düğüm başına bir QPS metriği oluşturmak için Bigtable'ın performansını temsili veriler ve sorgularla test etmenizi önerir.

Cassandra, Bigtable tarafından yönetilen bileşenleri kullanarak çok sayıda yönetim işlevi gerçekleştirir. Büyük tablo yedekleri, kümede nesneler olarak depolanan tablonun geri yüklenebilir kopyalarını oluşturur. Yedeklemeler daha az düğüm kaynağı tüketir ve bulut depolamadan daha ucuzdur. Bigtable'ı yedeklemenin başka bir yöntemi de, Cloud Storage'a yönetilen bir veri aktarımı kullanmaktır. İşletim sistemine yama uygulama, düğüm kurtarma, düğüm onarımı, depolama sıkıştırma izleme ve SSL sertifikası döndürme gibi dahili bakım görevlerinin tümü, Bigtable hizmeti tarafından sorunsuz bir şekilde gerçekleştirilir. Bigtable Google Cloud konsol sayfasında örneklerde, kümelerde ve tablo düzeylerinde aktarım hızı ve kullanım metriklerini izlemek için panolar mevcuttur. Gelişmiş performans ayarı yapmak için izleme panosunu kullanabilirsiniz.

Bigtable makalesi, büyük ölçeklendirmeyi destekleyen bir veri depolama sistemini açıklar. Verilerdeki her tablo birkaç bölüme ayrılmıştır. Bir satır tuşu veya bir dizi satır tuşu kullanarak tabloyu sorgulayabilirsiniz. Bigtable makalesi ayrıca, tablonun çalışmasını bir düğümler kümesine dağıtmak için bir yöntemi açıklar. Açık kaynaklı bir veritabanı olan Apache Cassandra, Bigtable makalesindeki bazı kavramlara dayanmaktadır. Veri merkezleri, depolamanın verilere hizmet eden sunucular arasında paylaşıldığı dağıtılmış bir düğüm mimarisi kullanır. Bigtable'ın veri depolama sistemine erişim, cbt komut satırı arayüzü ve istemci kitaplıkları kullanılarak sağlanır. Bigtable, Python'a ek olarak bir dizi programlama dili içerir ve bu da uygulamalarla entegrasyonu kolaylaştırır.

Google'ın Hizmet Olarak Datastax Astra Cassandra'sı: Dağıtımı ve Ölçeklendirmesi Kolay

Google'ın DataStax Astra Cassandra as a Service, Cassandra hakkında bilgi edinmek için mükemmel bir seçimdir. Kubernetes Operator'ün kullanıcı arabirimi, Cassandra devreye alımınızı yapılandırmayı, yönetmeyi ve ölçeklendirmeyi kolaylaştırır.

Bigtable Belgeleri

Bigtable belgeleri , bu güçlü araç hakkında bilgi edinmek için harika bir kaynaktır. Bigtable'ın özelliklerine ve yeteneklerine genel bir bakışın yanı sıra nasıl kullanılacağına ilişkin ayrıntılı bilgiler sağlar. Belgeler iyi organize edilmiş ve takip edilmesi kolay olup, bu güçlü araç hakkında bilgi edinmek isteyen herkes için değerli bir kaynaktır.

Google Cloud Platform, Google'ın Bigtable veritabanını barındırmaktan sorumludur. Google'ın arka ucuyla birlikte kullanıldığında OpenTSDB 2.1 ve sonraki sürümlerini kullanmak kolaydır. Tek yapmanız gereken bir Bigtable bulut sunucusu oluşturmak, Bigtable HBase kabuğunu kullanarak TSDB tablolarınızı ayarlamak ve TSD'leri başlatmak. Bigtable'ın istemcileri şu anda beta aşamasındadır ve çeşitli değişikliklerden geçmektedir.

Bigtable'ın Verimli Veri Düzeni

Bigtable, MapReduce işlemleri için de çok uygundur. Verimli veri düzeni sayesinde MapReduce, büyük hacimli verileri kısa sürede işleyebilir.