Büyük metin verisinde sıkıştırma ve sıkıştırılmış arama için kelime tabanlı bir yaklaşım
A word based approach for compression and compressed matching in big text data
Yazar: EMİR ÖZTÜRK
Danışman: PROF. DR. BANU DİRİ ; DR. ÖĞR. ÜYESİ ALTAN MESUT
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Doktora, 2018
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Büyük veri = Big data ; Veri sıkıştırma = Data compression

Özet:
Nesnelerin internetinin yaygınlaşması ve buna bağlı olarak son yıllarda artan veri miktarı büyük veri kavramını ortaya çıkarmıştır. Büyük verinin saklanması ve yönetilebilmesi için NoSQL veritabanları kullanılabilir. Ayrıca, verinin daha az yer kaplaması ve performansın arttırılması amacıyla sıkıştırma algoritmaları da kullanılabilmektedir. Hazırlanan tezin amacı, NoSQL veritabanları ile birlikte kullanılabilecek çoklu akış desteği sunan bir sıkıştırma algoritması geliştirmek ve bu sıkıştırma algoritmasının kullanılmasıyla ağdaki trafik akışını ve NoSQL veritabanlarının üzerinde oluşan yükü azaltmaktır. Algoritmanın sıkıştırılmış arama desteği ve arama için akışların tümüne ihtiyaç duyulmaması ile veritabanından istenilen veri miktarı azaltılmaktadır. 
Tez çalışması kapsamında ilk olarak MWCA (Multi-Stream Word-Based Compression Algorithm) isimli kelime tabanlı bir sıkıştırma algoritması geliştirilmiş ve bu sıkıştırma aloritmasının mevcut bilinen algoritmalarla sıkıştırma oranı ve hız bakımından karşılaştırılması gerçekleştirilmiştir. Karşılaştırmaya genel amaçlı algoritmaların yanında kelime tabanlı sıkıştırma algoritmaları da dâhil edilmiştir. 
Algoritmanın geliştirilmesi aşamasından sonra üç farklı kategoride bulunan NoSQL veritabanları incelenmiş ve MWCA algoritmasının bu veritabanlarına yazma işlemi gerçekleştirmeden önce kullanılmasının performansa etkisi araştırılmıştır. Ayrıca MWCA, anahtar-değer tabanlı veritabanı olan LevelDB üzerine bir blok sıkıştırma algoritması olarak eklenmiş ve bu veritabanı üzerinde kullanılabilen blok sıkıştırma algoritması olan Snappy ile performans karşılaştırması gerçekleştirilmiştir.
Son aşamada ise, saklamak istediğimiz verilerin belge tabanlı olması ve indeksli arama desteği sunması sebebiyle, MongoDB seçilmiş ve farklı konfigürasyonları için performans ölçümü gerçekleştirilmiştir. MongoDB üzerinde tek düğüm yazma/okuma işlemi gerçekleştirildiği gibi standart bölümlendirme ve kuralları verilerek dile göre bölümlendirme işlemi gerçekleştirilmiştir. Ayrıca, bu bölümlendirme konfigürasyonları sıkıştırmasız, Snappy ve Zlib olmak üzere MongoDB'nin desteklediği üç farklı sıkıştırma yöntemi kullanılarak sonuçlar elde edilmiştir. MWCA, birçok kelime tabanlı yöntem gibi başka sıkıştırma algoritmalarından önce kullanılarak onların sıkıştırma oranını arttırabilmektedir. Bu nedenle, kurulan bu konfigürasyonların tümü için MWCA'nın ön aşama olarak kullanılması ile de sonuçlar elde edilmiş ve MWCA'nın sürece olan etkisi incelenmiştir.
Yapılan çalışmalar ve performans analizleri sonucunda MWCA'nın gerek blok sıkıştırma algoritması olarak gerekse ön aşama olarak kullanılmasının oran ve süre bakımından performansa katkı sağladığı sonucu elde edilmiştir.

Abstract:
With the popularity of "Internet of Things" and correspondingly increasing amount of data create the concept of "Big Data". NoSQL databases could be used to store and manage large data. Compression algorithms can also be used to reduce space and improve performance. The purpose of this thesis is to develop a compression algorithm that provides multiple streaming support and can be used with NoSQL databases. By using this algorithm, load on the network traffic and NoSQL databases could be reduced. The amount of data requested from the database is reduced by the algorithm's compressed search support and there is no need for the entire stream during search. 
In the thesis, a word-based compression algoritm named MWCA (Multi-Stream Word-Based Compression Algorithm) is developed and compared with existing algorithms in terms of speed and compression ratio. Word-based compression algorithms are included in comparison in addition to the general purpose algorithms.
Afterwards, NoSQL databases in three different categories are obtained and the effect of using MWCA before writing operation on these databases is examined. Also, MWCA is added as a block compression algorithm on LevelDB which is a key-value database and performance comparison has been made with Snappy, the existing block compression algorithm on LevelDB by default.
In the last stage, because the data we want to keep is document based and offers indexed search support, MongoDB was selected and performance measurement was measured for different configurations. MongoDB was selected and performance was measured for different configurations. On MongoDB read/write operation is performed on three configurations: a single node, standard partitioning and partitioning by language with given rules. In addition, these partitioning configurations have been used with three different compression Options supported by MongoDB which are None, Snappy and Zlib. MWCA could be used before other compression algorithms to increase compression ratio like other word-based methods. Therefore, the results of using MWCA as a preliminary stage for all of these later configurations were also obtained and the effect of integration of MWCA on the process was examined.
As a result of the performance analysis, it can be said that the use of MWCA as a block compression algorithm or as a preprocessing algorithm gives better results in terms of ratio and time.