Sütun odaklı VTYS - Column-oriented DBMS

Bir sütun odaklı DBMS veya kolon DBMS a, veritabanı yönetim sistemi (DBMS) Bununla depolar veri tabloları sütun yerine satıra göre. Bir sütun deposunun bir satır deposuna karşı pratik kullanımı, ilişkisel VTYS dünyasında çok az farklılık gösterir . Hem sütunlu hem de satır veritabanları, verileri yüklemek ve sorguları gerçekleştirmek için SQL gibi geleneksel veritabanı sorgu dillerini kullanabilir. Hem satır hem de sütun veritabanları, ortak ayıklama, dönüştürme, yükleme (ETL) ve veri görselleştirme araçları için veri sunmak için bir sistemdeki omurga olabilir . Bununla birlikte, verileri satırlar yerine sütunlarda depolayarak, veritabanı, istenmeyen verileri taramak ve satırlardaki istenmeyen verileri atmak yerine bir sorguyu yanıtlamak için ihtiyaç duyduğu verilere daha hassas bir şekilde erişebilir.

Açıklama

Arka plan

İlişkisel bir veritabanı yönetim sistemi, sütunlardan ve satırlardan oluşan iki boyutlu bir tabloyu temsil eden veriler sağlar. Örneğin, bir veritabanında şu tablo olabilir:

satır kimliği EmpId Soyadı İlk adı Aylık maaş
001 10 Smith Joe 60000
002 12 Jones Mary 80000
003 11 Johnson Cathy 94000
004 22 Jones Bob 55000

Bu basit tablo bir çalışan tanımlayıcısı (EmpId), ad alanları (Soyadı ve Adı) ve maaşı (Maaş) içerir. Bu iki boyutlu biçim bir soyutlamadır. Gerçek bir uygulamada, depolama donanımı, verilerin şu veya bu biçimde serileştirilmesini gerektirir .

İçeren en pahalı operasyonlar sabit diskler vardır istiyor . Genel performansı iyileştirmek için, ilgili veriler, arama sayısını en aza indirecek şekilde saklanmalıdır. Bu, referansın yeri olarak bilinir ve temel kavram bir dizi farklı bağlamda ortaya çıkar. Sabit diskler , genellikle tablonun birkaç satırını depolamak için yeterli olan sabit boyutta bir dizi blok halinde düzenlenir . Tablonun verilerini, satırlar bu bloklara sığacak şekilde düzenleyerek ve ilgili satırları sıralı bloklarda gruplayarak, birçok durumda, arama sayısı ile birlikte okunması veya aranması gereken blok sayısı en aza indirilir.

Pinnecke ve ark. 2017 itibariyle sütun/sıra hibridizasyon tekniklerini kapsar.

Satır odaklı sistemler

Bir tabloyu saklamanın yaygın bir yöntemi, her veri satırını aşağıdaki gibi seri hale getirmektir:

001:10,Smith,Joe,60000;
002:12,Jones,Mary,80000;
003:11,Johnson,Cathy,94000;
004:22,Jones,Bob,55000;

Veriler tabloya eklenirken rowid, sisteme dahili olarak verilere atıfta bulunmak için kullanılan bir dahili kimlik atanır . Bu durumda kayıtlar rowid, kullanıcı tarafından atanan 'den bağımsız olarak sıralı ' lere sahiptir empid. Bu örnekte, VTYS, rowids'yi depolamak için kısa tamsayılar kullanır . Pratikte, normal olarak daha büyük sayılar, 64-bit veya 128-bit kullanılır.

Satır yönelimli sistemler, mümkün olduğunca az işlemle tüm satır veya kayıt için verileri verimli bir şekilde döndürmek için tasarlanmıştır. Bu, örneğin bir rolodex sistemindeki bir kullanıcının iletişim bilgileri veya bir çevrimiçi alışveriş sistemi için ürün bilgileri gibi sistemin belirli bir nesne hakkında bilgi almaya çalıştığı yaygın kullanım durumuyla eşleşir . Kayıt verilerini, ilgili kayıtlarla birlikte disk üzerinde tek bir blokta saklayarak, sistem minimum disk işlemi ile kayıtları hızlı bir şekilde alabilir.

Satır yönelimli sistemler, az sayıda belirli kaydın aksine, tüm tablo üzerinde küme çapında işlemler gerçekleştirmede verimli değildir. Örneğin, maaşları 40.000 ile 50.000 arasında olan örnek tablodaki tüm kayıtları bulmak için, VTYS'nin eşleşen kayıtları arayan tüm tabloyu tam olarak taraması gerekir. Yukarıda gösterilen örnek tablo muhtemelen tek bir disk bloğuna sığacak olsa da, birkaç yüz satırlık bir tablo bile sığmaz ve verileri almak ve incelemek için birden çok disk işlemi gerekir.

Operasyonların bu tür performansını (çok yaygındır ve bir DBMS kullanılması durumunda genel noktasını) geliştirmek için, en DBMSs kullanımını destekleyen veritabanı endeksler ile birlikte sütun kümesinden tüm değerleri depolamak, rowidiçine geri işaretçiler orijinal masa. Maaş sütunundaki bir dizin şöyle görünür:

55000:004; 
60000:001;
80000:002;
94000:003;

Dizinler, tüm satırlar yerine yalnızca tek veri parçalarını sakladıklarından, genellikle ana tablo depolarından çok daha küçüktür. Bu daha küçük veri kümesini taramak, disk işlemlerinin sayısını azaltır. Dizin yoğun bir şekilde kullanılıyorsa, ortak işlemler için gereken süreyi önemli ölçüde azaltabilir. Bununla birlikte, dizinlerin bakımı, özellikle veritabanına yeni veriler yazıldığında, sisteme ek yük getirir. Kayıtların yalnızca ana tabloda saklanması gerekmez, eklenmiş dizinlerin de güncellenmesi gerekir.

Dizinlerin büyük veri kümelerinde performansı önemli ölçüde iyileştirmesinin ana nedeni, bir veya daha fazla sütundaki veritabanı dizinlerinin tipik olarak değere göre sıralanmasıdır, bu da aralık sorgulama işlemlerini (yukarıdaki "40.000 ile 50.000 arasında maaşlı tüm kayıtları bul" örneği gibi) çok hızlı hale getirir. (düşük zaman karmaşıklığı ).

Bir dizi satır yönelimli veritabanı , bir bellek içi veritabanı olan RAM'e tamamen sığacak şekilde tasarlanmıştır . Bu sistemler disk işlemlerine bağlı değildir ve tüm veri kümesine eşit zamanlı erişime sahiptir. Bu, tipik toplama amaçları için tam bir dizin olarak orijinal verileri tam olarak taramak için aynı miktarda işlem gerektirdiğinden dizinlere olan ihtiyacı azaltır. Bu tür sistemler bu nedenle daha basit ve daha küçük olabilir, ancak yalnızca belleğe sığacak veritabanlarını yönetebilir.

Sütun odaklı sistemler

Sütun yönelimli bir veritabanı, bir sütunun tüm değerlerini birlikte serileştirir, ardından bir sonraki sütunun değerlerini vb. Örnek tablomuz için veriler şu şekilde depolanacaktır:

10:001,12:002,11:003,22:004;
Smith:001,Jones:002,Johnson:003,Jones:004;
Joe:001,Mary:002,Cathy:003,Bob:004;
60000:001,80000:002,94000:003,55000:004;

Bu düzende, sütunlardan herhangi biri, satır yönelimli bir sistemdeki bir dizinin yapısıyla daha yakından eşleşir. Bu, sütun odaklı bir mağazanın "gerçekten sadece" her sütunda bir dizin bulunan bir satır mağaza olduğu yanlış inancına yol açabilecek karışıklığa neden olabilir. Ancak, önemli ölçüde farklılık gösteren verilerin haritalanmasıdır. Satır yönelimli dizinlenmiş bir sistemde, birincil anahtar, dizine alınmış verilerden eşlenen satır kimliğidir. Sütun yönelimli sistemde, birincil anahtar satır kodlarından eşlenen verilerdir. Bu ince görünebilir, ancak fark, yukarıdaki iki "Jones" öğesinin iki satır kimliğiyle tek bir öğeye sıkıştırıldığı aynı mağazada yapılan bu ortak değişiklikte görülebilir:

…;Smith:001;Jones:002,004;Johnson:003;…

Sütun odaklı bir sistemin operasyonda daha verimli olup olmayacağı, büyük ölçüde otomatikleştirilen iş yüküne bağlıdır. Belirli bir nesne (tüm satır) için tüm verileri alan işlemler daha yavaştır. Satır yönelimli bir sistem, satırı tek bir disk okumasında alabilirken, sütunlu bir veritabanından birden çok sütundan veri toplamak için çok sayıda disk işlemi gerekir. Ancak, bu tam satırlı işlemler genellikle nadirdir. Çoğu durumda, yalnızca sınırlı bir veri alt kümesi alınır. Örneğin bir rolodex uygulamasında, bir kişi listesi oluşturmak için birçok satırdan ad ve soyadı toplamak, herhangi bir tek adres için tüm verileri okumaktan çok daha yaygındır. Bu, özellikle veriler birçok isteğe bağlı sütunla "seyrek" olma eğilimindeyse, veritabanına veri yazmak için daha da doğrudur. Bu nedenle, sütun mağazaları birçok teorik dezavantaja rağmen mükemmel gerçek dünya performansı göstermiştir.

Bölümleme , dizin oluşturma , önbelleğe alma, görünümler, OLAP küpleri ve önden yazma günlüğü veya çok sürümlü eşzamanlılık denetimi gibi işlem sistemleri , her iki sistemin de fiziksel organizasyonunu önemli ölçüde etkiler. Bununla birlikte, çevrimiçi işlem işleme (OLTP) odaklı RDBMS sistemleri daha çok satır odaklıyken, çevrimiçi analitik işleme (OLAP) odaklı sistemler satır odaklı ve sütun odaklı bir dengedir.

Faydalar

Satır yönelimli ve sütun yönelimli veritabanları arasındaki karşılaştırmalar, arama süresi bilgisayarlardaki diğer darboğazlarla karşılaştırıldığında inanılmaz derecede uzun olduğundan , belirli bir iş yükü için sabit disk erişiminin verimliliği ile tipik olarak ilgilidir . Örneğin, tipik bir Seri ATA (SATA) sabit diskinin ortalama arama süresi 16 ile 22 milisaniye arasındayken, Intel Core i7 işlemcide DRAM erişimi ortalama 60 nanosaniye, yani yaklaşık 400.000 kat daha hızlıdır. Açıkça, disk erişimi, büyük verilerin işlenmesinde önemli bir darboğazdır. Sütunlu veritabanları, hem benzer sütunlu verileri verimli bir şekilde sıkıştırarak hem de yalnızca sorguyu yanıtlamak için gerekli verileri okuyarak diskten okunması gereken veri miktarını azaltarak performansı artırır.

Uygulamada, sütunlu veritabanları, tipik olarak tüm veriler (muhtemelen petabaytlar ) üzerinde oldukça karmaşık sorgular içeren OLAP benzeri iş yükleri (örneğin, veri ambarları ) için çok uygundur . Ancak, sütunlu bir veritabanına veri yazmak için bazı çalışmalar yapılmalıdır. İşlemler (INSERT'ler) sütunlara ayrılmalı ve depolandıkça sıkıştırılmalıdır, bu da onu OLTP iş yükleri için daha az uygun hale getirir. Satır yönelimli veritabanları, etkileşimli işlemlerle daha yoğun olarak yüklenen OLTP benzeri iş yükleri için çok uygundur . Örneğin, tüm verileri tek bir satırdan almak, bu veriler tek bir konumda bulunduğunda (disk aramalarını en aza indirerek), satır yönelimli mimarilerde olduğu gibi daha verimlidir. Bununla birlikte, sütun yönelimli sistemler, hem OLTP hem de OLAP işlemlerini yapabilen melezler olarak geliştirilmiştir. Bu tür sütun yönelimli sistemlerin karşılaştığı bazı OLTP kısıtlamaları, (diğer niteliklerin yanı sıra) bellek içi veri depolama kullanılarak aracılık edilir . Hem OLAP hem de OLTP rollerine uygun sütun odaklı sistemler, ayrı sistemlere olan ihtiyacı ortadan kaldırarak toplam veri ayak izini etkin bir şekilde azaltır.

Sıkıştırma

Sütun verileri tek tip tiptedir; bu nedenle, sütun yönelimli verilerde bulunan ve satır yönelimli verilerde bulunmayan depolama boyutu optimizasyonları için bazı fırsatlar vardır. Örneğin, LZW veya çalışma uzunluğu kodlaması gibi birçok popüler modern sıkıştırma şeması, sıkıştırmak için bitişik verilerin benzerliğini kullanır. Klinik verilerde yaygın olan eksik değerler ve tekrarlanan değerler iki bitlik bir işaretleyici ile gösterilebilir. Aynı teknikler satır odaklı veriler üzerinde kullanılabilirken, tipik bir uygulama daha az etkili sonuçlar elde edecektir.

Sıkıştırmayı iyileştirmek için satırları sıralamak da yardımcı olabilir. Örneğin, bitmap dizinlerini kullanarak sıralama, sıkıştırmayı bir büyüklük sırasına göre iyileştirebilir. Çalışma uzunluğu kodlamasına göre sözlük sırasının sıkıştırma faydalarını en üst düzeye çıkarmak için , ilk sıralama anahtarları olarak düşük kardinaliteli sütunları kullanmak en iyisidir . Örneğin, cinsiyet, yaş, isim sütunlarına sahip bir tablo verildiğinde, önce cinsiyet (iki kardinalite), sonra yaş (önemlilik <128), sonra isim değerine göre sıralamak en iyisi olacaktır.

Sütunlu sıkıştırma, alma verimliliği pahasına disk alanında bir azalma sağlar. Elde edilen daha büyük bitişik sıkıştırma, verilerin okunması için sıkıştırılmamış olması gerekebileceğinden, rastgele erişim daha zor hale gelebilir. Bu nedenle, sütun yönelimli mimariler bazen sıkıştırılmış verilere erişim ihtiyacını en aza indirmeyi amaçlayan ek mekanizmalarla zenginleştirilir.

Tarih

Sütun depoları veya aktarılmış dosyalar, DBMS geliştirmenin ilk günlerinden itibaren uygulanmıştır. TAXIR, 1969'da biyolojide bilgi almaya odaklanan sütun odaklı bir veri tabanı depolama sisteminin ilk uygulamasıydı. Analiz edilebilenden çok daha fazla özelliğe sahip hasta kayıtlarından alınan klinik veriler, 1975'te ve sonrasında zaman odaklı bir veri tabanı sistemi tarafından işlendi. (TODS). İstatistik Kanada , 1976'da RAPID sistemini uygulamaya koydu ve bunu Kanada Nüfus ve Konut Sayımı ile diğer birçok istatistiksel uygulamanın işlenmesi ve geri alınması için kullandı. RAPID, dünyadaki diğer istatistik kuruluşlarıyla paylaşıldı ve 1980'lerde yaygın olarak kullanıldı. 1990'lara kadar İstatistik Kanada tarafından kullanılmaya devam etti.

Bir başka sütun odaklı veritabanı SCSS idi.

Daha sonra sütun odaklı veritabanı paketleri şunları içeriyordu:

2004 yılından bu yana ek açık kaynak ve ticari uygulamalar olmuştur. MonetDB , 30 Eylül 2004'te bir açık kaynak lisansı altında piyasaya sürüldü ve ardından artık feshedilmiş C-Store tarafından yakından takip edildi .

C-store, sonunda ekip üyesi Michael Stonebraker'ın devam etmesiyle birlikte 2005 yılında kurduğu Vertica'ya yol açan bir üniversite projesiydi .

MonetDB ile ilgili X100 projesi, VectorWise'a dönüştü . Druid , 2012'nin sonlarında açık kaynaklı olan ve şu anda çok sayıda kuruluş tarafından kullanılan sütun odaklı bir veri deposudur.

Klasik İlişkisel VTYS , satır yönelimli ve sütun yönelimli tabloları karıştırarak sütun yönelimli stratejileri kullanabilir. DBMS karmaşıklığına rağmen, bu yaklaşımın 2010'dan günümüze değerli olduğu kanıtlanmıştır. Örneğin, 2014'te Citusdata, PostgreSQL için sütun odaklı tablolar sundu ve McObject , 2012'de daha sonra bağımsız olarak denetlenen STAC-M3 kıyaslaması için yeni bir performans standardı oluşturmak için kullanılan eXtremeDB Financial Edition'ın piyasaya sürülmesiyle sütunlu depolama için destek ekledi .

Ayrıca bakınız

Referanslar

Dış bağlantılar