Bellek İçi Raporlama Sistemleri İçin Denormalizasyon Uygulaması

advertisement
Bellek İçi Raporlama Sistemleri İçin Denormalizasyon
Uygulaması
Mehmet Yasin Akpınar1, Erdem Orman1, Mehmetcan Gayberi2
İdea Teknoloji Çözümleri, İstanbul
mehmet.akpinar@ideateknoloji.com.tr, erdem.orman@ideateknoloji.com.tr
2 İstanbul Teknik Üniversitesi, Bilgisayar Mühendisliği Bölümü, İstanbul
gayberi@itu.edu.tr
1
Özet: Veri hacminin artışına bağlı olarak geleneksel veritabanlarının yetersiz kaldığı
bilinmektedir. Bu problemi çözmek amacıyla bellek içi veritabanlarından
faydalanılmaktadır. Ayrıca denormalizasyon çalışmalarıyla da performansta artış elde
edilebilmektedir. Ancak bellek içi veritabanları veri saklamaya elverişli değildir. Bu
sebeple disk bazlı yedeklemeye başvurulmaktadır. Bu çalışmada bu yöntemlerin hepsini
birlikte barındıran bir metod önerilmiştir ve gerçek veriler üzerinde testler yapılarak
önerilen metodun eski sistemle performans açısından karşılaştırması yapılmıştır.
Anahtar Sözcükler: Bellek İçi Veritabanı, Birliktelik Kuralı Analizi,
Denormalizasyon, Geleneksel Veritabanı.
A Denormalization Framework for Reporting Applications in Main Memory
Databases
Abstract: It is known that traditional databases are becoming insufficient due to the
increase in data. To overcome this problem, main memory databases are made use of.
Additionally, a performance increase can be achieved thanks to denormalization
operations. On the other hand, main memory databases are not compatible for data storage.
For that reason, traditional databases are utilized. In this study, a method combining all
these procedures is proposed and a performance comparison is presented by testing on
actual data.
Keywords: Association Rule Analysis, Denormalization, Main Memory Database,
Traditional Database.
1. Giriş
Ürün takiplerinin elektronik ortama taşınmasıyla birlikte şirket veritabanlarındaki
veri hacmi artışı beraberinde birçok
problem
ortaya
çıkarmıştır.
Bu
problemlerin en önemlilerinden bir tanesi
veri yönetiminin zorlaşması ve donanımın
yetersiz kalarak performans düşüşü
yaşanmasıdır. Bu nedenle veritabanı
yönetim sistemlerinde yapılan çalışmalar
büyük veri hacmine sahip şirketler için
hayati önem taşımaktadır.
Bu çalışmalar kapsamında geleneksel disk
tabanlı veritabanı sistemlerinin yetersiz
kaldığı durumlarda bellekiçi veritabanları
tercih edilmektedir. Bununla birlikte
veritabanında bulunan yapı analiz edilip
denormalizasyon
yoluna
gidilerek
performans
artışı
sağlanabilmektedir.
Bunların dışında bellek içi veritabanı ve
geleneksel disk tabanlı sistemler arasında
bir kanal oluşturularak veri aktarımının
sağlanması ve bu verinin güncelliğinin
korunması gerekmektedir.
Yapılan araştırmalarda yukarıda bulunan 3
yöntemi aynı anda bulunduran bir
uygulama görülmemiştir. Bu bildiride,
sayılan 3 yöntem bazı modifikasyonlarla
birlikte bir çatı altında toplanmış ve
kurumsal raporlama çözümlerinde yüksek
performanslı bir sistem elde edilmeye
çalışılmıştır. Çalışmanın esas hedefi,
raporlama sürecinde hız kazanmak ve
mevcut sitem ile raporlanması mümkün
olmayan verilerin önerilen yöntem ile
raporlanabilmesini sağlamaktır.
Giriş Bölümü’nde çalışmanın ortaya
çıkmasında etkili problemler, amaçlar ve
kapsama ait bilgiler verilmiştir. İkinci
bölüm olan İlgili Çalışmalarda ise literatür
araştırmasında
elde
edilen
bilgiler
paylaşılmıştır. Üçüncü Bölüm’de önerilen
yöntem detaylarıyla anlatılmakta olup,
Dördüncü
Bölüm’de
bu
yöntemin
gerçeklenmesiyle elde edilen karşılaştırmalı
sonuçlara yer verilmektedir. Son Bölüm
olan Sonuç Bölüm’ünde ise çalışmadan
elde edilen sonuçlar özetlenmektedir.
2. İlgili Çalışmalar
Veri odaklı çözümlerin birçoğunda uzun
yıllardır
disk
tabanlı
veritabanları
kullanılmaktadır. Bu tip sistemlerde ana
bileşen sabit disktir ve veri disk üzerinde
depolanır. Ancak sabit disklerin hızı düşük
olduğu için genellikle önbellek yapısından
destek
almaktadır.
Buna
rağmen
önbelleklerinin kısıtlı olması nedeniyle
işlenecek veri hacminin artışına bağlı olarak
performansları düşmektedir.
Teknolojideki gelişme ve değişimler bellek
donanımlarına hız artışı ve maliyet düşüşü
olarak yansımıştır. Bununla birlikte eskiden
yüksek maliyetli olan bellek içi veritabanı
kullanımı yaygınlaşmaya başlamıştır. 2011
yılında yapılan bir çalışmada bellek içi
veritabanı sistemlerinin performans odaklı
sistemlerdeki
payının
ciddi
şekilde
yükseldiği, bu sistemlerin yüksek hızda veri
işlemeye olanak sağladığı, çoklu kullanıcılı
sistemlerde kullanılabildiği ve önbelleğe
duyulan gereksinimi ortadan kaldırdığı
tespit edilmiştir [1]. 2012 yılında yapılan
bir çalışmada ise, özellikle 64-bit
sunucuların
gelişmesiyle
bellek
içi
veritabanlarının kapasitelerinin yükselerek,
daha
kullanışlı
hale
geldikleri
anlatılmaktadır [2]. Ancak bellek içi
veritabanları
beraberinde
yedekleme
problemini de getirmektedir. Fakat bu
problem disk bazlı anlık yedekleme ile
çözülebilmektedir. Bu alanda yapılan bir
çalışmada farklı algoritmalar kullanılarak,
hızlı ve az maliyetli bellek içi veritabanı
yedekleme ile uğraşılmıştır [3]. Öte yandan
geleneksel disk tabanlı sistemlerle birlikte
bellek içi tabanlı sistemlerin birlikte
kullanıldığı hibrid ilişkisel veritabanı
sistemleri de mevcuttur. 2011’de yapılan bir
çalışmada bu tip bir sistem üzerinde çeşitli
çalışmalarla ciddi performans artışları
sağlanmıştır [4].
Yapılan çalışmalar sadece donanımla kısıtlı
kalmamış, yazılımla da performans artışı
üzerine çalışılmıştır. Rapor sorgularında
zaman açısından JOIN ve UNION yapıları
oldukça yüksek maliyete neden olduğu için
denormalizasyon yoluna gidilmiş ve bazı
tablolar
önceden
birleştirilerek
bu
maliyetten kurtulmak istenmiştir. Bu
şekilde bir performans artışı sağlanabilmesi
için veritabanındaki verinin analiz edilip,
ilişkilerin çıkarılması gerekmektedir. 2001
yılında yapılan bir çalışmada çeşitli
denormalizasyon teknikleri detaylı bir
şekilde ele alınmıştır [5]. 2009 yılında
yapılan bir başka çalışmada ise sistematik
bir veritabanı denormalizasyon yöntemi
üretilmiş ve örnek sorgular üzerinden
açıklanmıştır [6].
3. Önerilen Yöntem
Bu bölümde önerilen yöntem detaylı bir
şekilde alt başlıklar halinde anlatılacaktır.
Her alt başlıkta bulunan akış diyagramları
bölümün sonunda birleştirilmiş olarak da
mevcuttur.
3.1 Mevcut Veritabanındaki Verilerin
Analiz Edilmesi
Veritabanındaki verilerin analizi birçok
konuda bilgi edinilmesini sağlamaktadır.
Çalışma kapsamında bu analiz için Log
Parser (Kayıt Ayrıştırıcı) uygulaması
yazılmıştır. Böylece raporların çekilme
sıklıkları, cevap süreleri ve istek zamanları
elde edilmiştir. Bu çıktı kullanılarak
raporların günlük, haftalık ve aylık
histogramları çıkarılmıştır. Bununla birlikte
cevap süresi uzun olan ve sistem üzerinde
yük oluşturan raporlar tespit edilip, bellek
içi veritabanından çekilecek raporlara karar
verilmiştir. Ayrıca tablo içeriklerindeki
değişiklikler (ekleme, güncelleme, silme)
incelenerek, bu değişiklerin günün hangi
zaman diliminde yoğunlaştığı öğrenilmiştir.
Şekil 1: Mevcut Veritabanı Analizi
3.3 Birliktelik Kuralı Analizi
Log Parser uygulaması aracılığıyla bellek
içi veritabanından çekilmesi kararlaştırılan
raporların sorguları SQL Parser aracılığıyla
ayrıştırıldıktan sonra birliktelik kuralı
analiziyle raporlarda birlikte en çok
kullanılan JOIN yapıları elde edilmeye
çalışılmıştır. Agrawal, Imieliński ve
Swami’nin [7] çalışmasını baz alan bu
adımda market sepetlerindeki ürünler yerine
rapor sorgularında bulunan JOIN yapıları
kullanılarak bu yapıları işlenmiş olarak
bulunduran ekstra tablolar yaratılmıştır. 2
veya daha fazla tablonun JOIN kuralları
çerçevesinde birleşimiyle oluşan bu tablolar
’küp tablo’ olarak adlandırılmıştır.
Şekil 3: Birliktelik Kuralı Analizi
3.2 Rapor Sorgularının Ayrıştırılması
3.4 Boyut Tahmini Çalışmaları
Mevcut
veritabanındaki
verilerin
analizinden sonra kararlaştırılan raporların
SQL sorguları yazılan SQL Parser
uygulaması aracılığıyla ayrıştırılmıştır.
Çıktı
olarak
TABLO,
KOLON,
FONKSIYON ve JOIN yapıları elde
edilmiştir. Bu bilgiler aracılığıyla mevcut
veritabanı yapısından bellek içi veritabanına
aktarılması istenilen veriye ulaşılmıştır. Bu
adımın sağladığı en büyük yarar bellek içi
veritabanına kopyalanacak veri içinde
gereksiz bilgilerin bulunmaması dolayısıyla
yeni yaratılacak veritabanı boyutunun
minimum tutulmasıdır.
Bellek içi veritabanına aktarılacak olan veri
ve yaratılacak küp tablolar belirlendikten
sonra mevcut veritabanındaki veri tipi,
boyutları ve tablolardaki satır sayıları
kullanılarak bellek içi veritabanında yer
alacak verinin toplam boyutu yaklaşık
olarak hesaplanmıştır. Bu hesaplama
yapılırken bellek içi veritabanı ürününün
sunduğu kolon sıkıştırma özelliği de göz
önüne alınmıştır. Böylece oluşturulacak
veritabanının donanım gereksinimi elde
edilmiştir.
Şekil 2: SQL Parser ile Ayrıştırma
Şekil 4: Boyut Tahmini Hesaplamaları
3.5 Güncelleme Modülü Çalışmaları
Mevcut veritabanı ve bellek içi veritabanı
sistemleri arasında veri ve dolayısıyla rapor
güncelliği sağlanması için bir güncelleme
modülü gerekmektedir. Bu işlem birden
fazla yöntemle sağlanabildiği için bu
yöntemlerin kıyaslanması ve en uygun
olanın seçilmesi gerekmektedir.
Şekil 5: Genel Akış
4. Deneysel Sonuçlar
Bu bölümde bir önceki bölümde anlatılan
adımlar takip edilerek algoritmalarda
kullanılan parametreler ve elde edilen
çıktılar sayısal olarak paylaşılmıştır.
Çalışma kapsamında üzerinde çalışılan test
sunucusunun özellikleri şu şekildedir; 4
Intel(R) Xeon(R) CPU E7-4820 @ 2.00
GHz işlemci, 240 GB bellek ve 300 GB
disk. Sunucu üzerinde kurulu işletim
sistemi ise Windows Server 2008 R2’dir.
Hazırlanan test sunucusunda geleneksel
disk tabanlı veritabanı ürünü olarak Oracle
11g (Release 2) veritabanı sistemi ürünü,
bellek içi veritabanı olarak Oracle
TimesTen (11.2.2 x64) ürünü kullanılmıştır.
Bu ürünün seçiminde farklı bellek içi
veritabanı sistemlerinin performanslarının
karşılaştırıldığı bildiriden faydalanılmıştır
[8].
4.1 Mevcut Veritabanından Elde Edilen
Bulgular
Mevcut veritabanı analizinin ilk aşamasında
Log Parser uygulaması örnek müşteri
verilerinden oluşturulan alt küme üzerinde
kullanılarak 2013 Eylül - 2014 Şubat
periyodundaki rapor kayıtları (logları)
incelenmiştir. Bu çıktıdan daha doğru cevap
süresi
ortalamaları
elde
edebilmek
amacıyla, sonuçlar üzerinde tek yönlü
budanmış ortalama (one-sided trimmed
mean) yöntemi kullanılmıştır. Bu yöntemle
her raporun en yavaş %1’lik kesimde yer
alan kısmı ortalama hesabından çıkarılarak
bazı bağlantı veya kullanıcı kaynaklı
hataların
sonucu
etkilememesi
amaçlanmıştır. Tek yönlü budanmış çalışma
hızı ortalamaları 10 saniyenin üzerinde olan
raporların
bellek
içi
veritabanında
çalıştırılması uygun görülmüştür. Ayrıca
rapor istek frekansları da göz önünde
bulundurulmuştur.
Raporların
istek
frekanslarının bütün rapor istekleri içindeki
yüzdeleri hesaplanıp değerleri %3 ün
üzerindeki raporlar seçilmiştir. Bu iki
özelliğe aynı anda sahip olan rapor
sayısının 5 olduğu görülmüştür ve
performans testlerinde bu alt küme ve
raporlar kullanılmıştır. Yine Log Parser’dan
elde edilen çıktı kullanılarak 4 farklı
histogram üretilmiştir. Şekil 6’da bu
histogramlar mevcuttur.
Veritabanı analizinin ikinci aşamasında ise
tablo içeriklerindeki değişiklikler ele
alınmıştır. Şekil 7’de verilen sonuçlar
ışığında değişiklik miktarlarında sabah
08:00-10:00
arasında
bir
yoğunluk
yaşandığına, ancak asıl yoğunluğun 16:0020:00 arasında olduğuna ulaşılmıştır. Bu
bilgiler daha sonra periyodik güncelleme
zamanları belirlenirken kullanılmıştır.
Şekil 6: Rapor İsteklerinin Çeşitli Histogramları
Şekil 7: Büyük Veriye Sahip Tablo İçeriklerinin Günün Saatlerine Göre Değişimleri
4.2 Rapor Sorgularının Ayrıştırılması
Rapor kayıtları incelemesiyle bellek içi
veritabanından çekilmesi kararlaştırılan 5
raporun sorgularının SQL Parser aracılığıyla
ayrıştırılması sonucu yeni yaratılacak
veritabanına aktarılması gereken verinin 19
tabloda yer aldığı saptanmıştır. Ayrıca bu 5
raporun sorgularında bulunan JOIN yapıları
da
birliktelik
kuralı
analizi
için
kaydedilmiştir.
Bu hesaplamada kullanılan formül Şekil 8 de
verilmiştir.
int row_size = 0;
int size = 0;
for each column in table_columns {
If (data_type == "NVARCHAR2"
&& character _length > 64)
size = 2 * avg_column_length + 24;
Else If (data_type == "NVARCHAR2"
&& character _length <= 64)
size = 2 * character_length + 8;
4.3 Birliktelik Kuralı Çalışmaları
Çalışmanın bu aşamasında en çok bilinen ve
uygulaması en kolay birliktelik kuralı
algoritmalarından
biri
olan
Apriori
Algoritması gerçeklenmiştir. Bununla birlikte
rapor sorgularından elde edilen JOIN
yapılarıyla
birlikte
rapor
frekansları
kullanılarak apriori algoritması için bir girdi
dosyası hazırlanmıştır.
Apriori Algoritmasında kullanılan terim ve
formüller Tan, Steinbach ve Kumar’ın
kitaplarından alınmıştır [9]. Algoritma
gerçeklenirken birçok farklı parametre
denenmiştir. Bu parametreler içinden
veritabanı uzmanı ile birlikte en doğru
sonuçların support=0,33 ve confidence=0,01
parametreleriyle elde edildiği görülmüştür.
Bir başka deyişle raporların en az 1/3’ünde
yer alan JOIN ilişkilerinin küp tablo halinde
saklanması gerektiği sonucuna varılmıştır.
Bu parametreler doğrultusunda elde edilen
çıktı filtrelenmiştir. Bu adımda amaçlanan
mümkün olan en çok JOIN ilişkisini bir arada
bulunduran küp tablolar yaratabilmektir.
Bunu sağlamak için bir başka kuralın alt
kümesi olan kurallar elenmiştir ve geriye
sadece 4 küp tablo önerisi kalmıştır.
4.4 Boyut Tahmini Çalışmaları
Rapor sorgularının ayrıştırılmasından elde
edilen 19 tablo ve birliktelik kuralı analiziyle
elde edilen kurallar doğrultusunda bu
tablolardan yaratılacak olan 4 küp tablonun
toplam boyutu 26GB olarak hesaplanmıştır.
Else If (data_type == "DATE")
size = 7;
Else If (data_type == "NUMBER")
size = data_precision + data_scale;
row_size += size;
}
double table_size = row_count * row_size;
// in bytes
table_size = table_size/1048576;
// in megabytes
Şekil 8: Boyut tahmini formülü
Formülde yer alan avg_column_length,
character _length, data_precision, data_scale ,
data_type değişkenleri Oracle Veritabanı
ürününden çekilen bilgilerdir.
Bu adımdan sonra bellek içi veritabanı
yaratılmıştır. Çalışma kapsamında yazılan
aktarım modülüyle mevcut veritabanından
bellek içi veritabanına veri aktarımı otomatik
olarak gerçekleştirilmiştir ve bu veriler
kullanılarak küp tabloların bellek içi
veritabanında yaratılması sağlanmıştır. Bu
modül girdi olarak 4.2 ve 4.3 numaralı
bölümlerde elde edilen bilgileri içeren bir
XML dosyası kullanmaktadır. Aktarım işlemi
yalnızca bir defa sistem kurulurken
çalıştırılmıştır. Sonrasında ise verinin
güncelliğini sağlamak için güncelleme
modülünden faydalanılmıştır.
Ayrıca Timesten ürününün bize sunduğu bir
özellik olan kolon bazlı sıkıştırma tablolar
yaratılırken uygulanarak 26GB olarak
belirlenen veri boyutunun veri aktarımı
sonrasında 18GB seviyesine düşürülmesi
sağlanmıştır.
4.5 Güncelleme Modülü Çalışmaları
Önerilen Yöntem Bölümü’nde bahsedildiği
üzere bu işlem algoritmik, anlık ve periyodik
olmak
üzere
3
farklı
şekilde
yapılabilmektedir. Bu 3 yöntemin güçlü ve
zayıf yönleri yapılan deneylerde saptanmış ve
Tablo 1’de gösterilmiştir:
Tablo 1: Çeşitli Güncelleme Yöntemlerinin
Karşılaştırmaları
Algoritmik
Güncelleme
Anlık
Güncelleme
Periyodik
Güncelleme
Anlık Bilgi
Doğruluğu
Sistem
Yükü
Karmaşıklık
Hız
ORTA
YÜKSEK
YÜKSEK
ORTA
YÜKSEK
YÜKSEK
DÜŞÜK
ORTA
ORTA
DÜŞÜK
DÜŞÜK
YÜKSEK
Çalışma kapsamında amaçlanan hedeflerden
bir tanesinin sistem üzerindeki yükü azaltmak
olması ile algoritmik ve anlık güncelleme
yöntemleri çelişmektedir. Ayrıca karmaşıklığı
düşük olan periyodik güncelleme yüksek hızı
ile de öne çıkmaktadır. Bu noktalar göz
önüne alındığında periyodik güncelleme en
uygun yöntem olarak seçilmiştir.
Bununla birlikte mevcut veritabanı analizinde
elde edilen tablo içeriklerinin günün
saatlerine göre değişimi ele alınarak
periyodik güncelleme zamanlarına karar
verilmiş ve anlık bilgi doğruluğunun en
yüksek seviyede tutulması hedeflenmiştir.
Bütün işlemler tamamlandığında windows
servis halinde yazılan güncelleme modülü ile
istenilen periyotlarda güncellemenin otomatik
olarak yapılması sağlanmıştır. Bu modül yine
aktarım modülünde olduğu gibi bir XML
girdisi kullanarak mevcut veritabanındaki
içeriklerinde değişiklik olan tabloların bellek
içi veritabanına aktarımından ve küp
tabloların
yeniden
oluşturulmasından
sorumludur.
yapabilmek için seçilen 5 raporun SQL
sorguları bellek içi veritabanında çalışacak
şekilde yeniden düzenlenmiştir. İki sistem
üzerinden de çalıştırılan sorguların doğruluğu
onaylandıktan sonra Tablo 2’deki bulgulara
ulaşılmıştır:
Tablo 2: Performans Testi Sonuçları
Raporlar
Rapor 1
Rapor 2
Rapor 3
Rapor 4
Rapor 5
Veritabanı
Seçimi
Disk
Bellek İçi
Disk
Süre
(sn.)
1,99
0,53
8,08
Hızlanma
katsayısı
Bellek İçi
Bellek İçi + Küp
Tablolar
Disk
Bellek İçi
Disk
0,25
32,32 x
0,2
40,40 x
111,08
7,97
12,78
13,94 x
0,09
142 x
0,06
213 x
19,59
0,78
25,11 x
Bellek İçi
Bellek İçi + Küp
Tablolar
Disk
Bellek İçi
3,75 x
5. Sonuç
Yapılan deneylerde de görüldüğü üzere,
büyük veri hacmine sahip raporlama
sistemlerinde bellek içi veritabanı performans
açısından olumlu sonuçlar göstermektedir.
Ayrıca rapor isteklerinin derinlik ve
karmaşıklığına göre geleneksel ve bellek içi
veritabanı sistemlerine ayrıştırılması ile disk
tabanlı sisteme de katkı sağlamaktadır.
Bununla birlikte cevap sürelerinde yaşanan
azalma da sistem üzerindeki yükün azalması
konusunda önemli bir fayda sağlamaktadır.
4.6 Performans Testleri
Bellek içi veritabanı sistemi üzerinde
çalışacak raporların ve yaratılacak küp
tabloların seçiminde verinin yapısı ve
kullanıcı yorumu etkilidir. Ancak yüksek
frekansta ve yüksek karmaşıklıkta olan rapor
isteklerinin bellek içi veritabanı sistemine
iletilmesi, diğer daha düşük frekans ve düşük
karmaşıklıktaki
rapor
isteklerinin
ise
geleneksel sistem üzerinden cevaplanması
daha uygun görülmektedir.
Son olarak önerilen sistem ve geleneksel
sistem arasında bir performans kıyaslaması
Sonuç olarak, büyük veri üzerinde çalışmakta
olan raporlama ve benzeri çözümlerde, bellek
içi veritabanı destekli bir yapının hem
performans hem de sistem kaynak kullanımı
açısından ciddi bir yararı olduğu saptanmıştır.
Ayrıca karmaşıklığı yüksek olan sorgular
içeren bir sistemde denormalizasyon yoluyla
maliyeti yüksek bazı işlemlerin önceden
yapılarak her sorguda tekrar çalıştırılmasının
önüne geçilmiş ve büyük veri üzerinde
çalışmayı kolaylaştırdığı ortaya konulmuştur.
6. Teşekkür
Bu bildirideki çalışmalar "Idea Teknoloji ve
Bilgisayar Çözümleri Ltd. Sti." kurumu
tarafından 3120961 numaralı TEYDEB
projesi kapsamında desteklenmiştir.
7. Kaynaklar
[1] Francesco Pagano, Davide Pagano: Using
In-Memory Encrypted Databases on the
Cloud. Securing Services on the Cloud
(IWSSC),
2011
1st
International
Workshop. 30-37 (2011)
[2] Sansar Choinyambuu: In Memory
Database:Performance evaluation based on
query time. Seminar Database Systems.
(2012)
[3] Lasaro Camargos, Fernando Pedone,
Rodrigo Schmidt: A Primary-Backup
Protocol
for
In-Memory
Database
Replication. Network Computing and
Applications, 2006. NCA 2006. Fifth IEEE
International Symposium. 30-37 (2006)
[4] Joan Guisado Gamez: In-memory and
Ondisk
Hybrid
Relational
Database
Management System. Bitirme Tezi. (2011)
[5] G. Lawrence Sanders, Seungkyoon Shin:
Denormalization Effects on Performance of
RDBMS. Proceedings of the 34th Annual
Hawaii International Conference on
System Sciences, 2001. 3-6 (2001)
[6] Yma Pinto: A Framework for Systematic
Database Denormalization. Global Journal
of Computer Science and Technology, Vol
9, No 4. 44-52 (2009)
[7] Agrawal, R.; Imieliński, T.; Swami, A:
Mining association rules between sets of
items in large databases. Proceedings of the
1993 ACM SIGMOD international
conference on Management of data SIGMOD’93. 207 (1993)
[8] Şule Gündüz Öğüdücü, Mehmetcan
Gayberi, Erhan Akpınar, Hakan Kutluay: A
Study for Performance Comparison of
Different In-Memory Databases. Application
of Information and Communication
Technologies (AICT), 2013. 7th IEEE
International Conference. 91-96 (2013)
[9] Pang-Ning Tan, Michael Steinbach, Vipin
Kumar: Introduction to Data Mining.
Addison-Wesley. 329-337 (2005)
Download