Keywords: M2M, IoT, SQL, NoSQL, MongoDB

advertisement
M2M SİSTEMLERDE SQL VEYA NOSQL KULLANIMI
Saadin Oyucu1, Hüseyin Polat2
1
2
Gazi Üniversitesi, Bilgisayar Mühendisliği Bölümü, Ankara
Gazi Üniversitesi, Bilgisayar Mühendisliği Bölümü, Ankara
saadinoyucu@gazi.edu.tr, polath@gazi.edu.tr
Özet: Makineler Arası İletişim (Machine to Machine: M2M) sistemlerine veri sağlayan en önemli bileşenler algılayıcılardır.
Algılayıcı teknolojisi günümüzde oldukça ilerlemiştir. Bu ilerleme sayesinde algılayıcıların kullanıldığı alanlar, dolaysıyla da
M2M sistemlerin kullanıldığı alanlar giderek çoğalmıştır. Uzaktan izleme, akıllı ev projeleri, enerji izleme sistemleri vb.
alanların hemen hemen hepsinde M2M sistemler kullanılmaktadır. M2M sistemlerde algılayıcılardan anlık olarak veri
alınmakta ve daha sonra bir M2M platformuna gönderilerek bu veriler kolaylıkla izlenebilmekte, saklanabilmekte ve istatiksel
analizlere tabi tutulabilmektedir. Bazı durumlarda saklanacak veriler oldukça büyük boyutlara ulaşabilmektedir ve bu durum
verileri yazmakta, okumakta ve analiz etmekte bazı problemlere yol açmaktadır. Bu sistemlerde şimdiye kadar geleneksel
ilişkisel veri tabanları kullanılmıştır. Fakat zamanla değişen ihtiyaçlar doğrultusunda ölçeklenebilirlik ve kullanılabilirlik gibi
kavramlar ortaya çıkmış ve günümüzde büyük miktardaki verilerle daha rahat çalışabilmek için NoSQL kavramı ortaya
çıkmıştır. Bu çalışmada M2M sistemler için ilişkisel veri tabanı ve son zamanlarda popüler olan NoSQL veri tabanı çeşitli
yönleri ile ele alınarak incelenmiş ve M2M sistemlerde NoSQL veri tabanı kullanımının ne gibi avantajlar sağlayabileceği
üzerine durulmuştur. Ayrıca farklı ilişkisel veri tabanları ve NoSQL veri tabanları, M2M sistemler için performans
bakımından karşılaştırılmıştır.
Anahtar Sözcükler: M2M, IoT, SQL, NoSQL, MongoDB
USING SQL OR NOSQL IN M2M SYSTEMS
Abstract: Sensors are the most important ingredients that provides the data to the Machine to Machine (M2M) systems. The
sensors' technology is quite developed in today. Then, there is an incrementally increase in the number of areas in that sensors
are used, relatively M2M systems are used in nearly all of areas such as Telemetry, Smart Home Projects and Energy Tracing
Systems. Immediate data can be gotten from sensors in M2M systems and it can be traced, kept, and analyzed statically by
sending to one of M2M platforms. In some cases, reserved data can be reached to rather big dimensions and there may occur
some problems in writing, reading and analyzing these huge data. Traditional relational databases have been used in these
systems for many years. But, some concepts emerged in line with changing needs, such as scalability and availability and
today NoSQL concept has emerged to have more comfortable study with huge data. In this study, relational database for M2M
systems and recently popular NoSQL database are analyzed by considering its various aspects. This study is also focused on
what kind of advantages can be got after using NoSQL database in M2M systems. Additionally, different relational databases
and NoSQL databases are compared according to the performance in M2M systems.
Keywords: M2M, IoT, SQL, NoSQL, MongoDB
1.
Giriş
M2M kısaca, farklı veya aynı cihazların kablolu ya da
kablosuz bir şekilde haberleşmesini sağlayan teknolojiyi
ifade etmektedir. Günümüzde sayıları gittikçe artan M2M
uygulamaları, temel mimari olarak üç temel alandan
oluşmaktadır. Bunlar; M2M Cihaz Alanı, M2M iletişim
Alanı ve Uygulama Alanıdır. Uygulama alanında veriler
belirli formatlarda kullanıcıya sunulur. Bazı durumlarda
verilerin işlenerek sunulması gerekebilir. Geriye dönük
analizlerin
yapılması
istenilen
bir
sistemde,
algılayıcılardan alınan verilerin saklanması gerekmektedir.
Bir veya daha fazla algılayıcıdan alınan anlık verilerin
tutulduğu veri tabanlarının boyutları gittikçe artmaktadır.
Bu artış hem saklanması istenilen verilerin büyüklüğünden
kaynaklanan hem de performans bakımından bazı
problemlere yol açmaktadır.
Verileri saklamak için geleneksel olarak ilişkisel veri
tabanı modeli (Relational Database Management System:
RDMS) kullanılmaktadır. Bu tip veri tabanları sorgu dili
olarak bilinen Yapısal Sorgu Dili (Structured Query
Language: SQL) veri tabanı olarak ta bilinirler [1].
Günümüzde SQL veri tabanlarının büyük öneme sahip
olması ve büyük projelerde kullanılması arka planda
desteğinin çok iyi olmasındandır. Özellikle ORACLE,
IBM ve MICROSOFT gibi dev teknoloji firmalarının bu
tip veri tabanlarını desteklemesi ile bu sistemler piyasada
oldukça fazla yer tutmuştur. Fakat günümüzde Bulut
Bilişim ve dağınık web uygulamalarının yaygınlaşması,
kullanılabilirliği ve ölçeklenebilirliği yüksek veri
tabanlarına ihtiyacın artmasına sebep olmuştur. Böylelikle
ilişkisel olmayan veri tabanı NoSQL kavramı ortaya
çıkmıştır. Özellikle artan veri depolama ihtiyacına bir
çözüm arayan ve veri tabanı performansını arttırmak
isteyen Amazon ve Google gibi şirketler ilişkisel olmayan
veri tabanlarını kullanmaya başlamıştır. Amazon şirketinin
Dynamo teknolojisi ve Google’ın Bigtable uygulaması
günümüzdeki NoSQL veri tabanları için kaynak olmuştur
[2].
Algılayıcılardan anlık olarak alınan verilerin büyük
boyutlara ulaşması ve aynı anda birden farklı cihazda
farklı işlemlerin yapılması isteği farklı problemleri
beraberinde getirmektedir [3]. Eric Brewer tarafından
2000’li yıllarda ortaya atılan, dağıtık sistemlerin aynı
anda;



Tutarlılık: Dağıtık sisteme bağlı tüm düğümlerde
aynı verilerin olması,
Kullanılabilirlik: Tüm isteklere her zaman cevap
verilebilmesi
Parça Toleransı: Sistem parçalarından birinin
çalışmaması durumunda sistemin düzgün devam
etmesi
gibi üç başlıkta ele aldığı özelliklerin savunulduğu CAP
(Consistency, Availability, Partition Tolerance) teoremine
göre aynı anda üç özellik değil sadece iki özelliğin
sağlanabileceği söylenmektedir. Bu teoremden yola
çıkarak farklı mimarilerde veri tabanları oluşturulmuştur.
Bu
mimariler
genellikle
CA
(Tutarlılık
ve
Kullanılabilirlik), CP (Tutarlılık ve Parça Toleransı), AP
(Tutarlılık ve Parça Toleransı) kalıpları içerisinde
geliştirilmeye çalışılmıştır [4].
SQL veri tabanlarının tutarlılığı ve kullanılabilirliği
oldukça yüksektir. Fakat NoSQL veri tabanları her zaman
tutarlılığı garanti etmemesine rağmen ölçeklenebilir bir
yapıya sahip olduğundan Parça Toleransı bakımından
oldukça iyidir. Bu özelliği ile tek bir sunucu için daha
fazla kullanıcı desteği sunabilir ve daha fazla algılayıcıdan
verileri alıp yazabilir veya okuyabilir [3].
Görüldüğü gibi veri tabanı mimarilerinde oldukça bol çeşit
ve bir o kadar da seçenek vardır. Bu çalışmada M2M
sistemlerin yaygınlaşmasıyla beraber algılayıcılardan
gelen ve büyük boyutlara ulaşan verilerin saklanabilmesi
için SQL ve NoSQL kavramları incelenmiş ve veri tabanı
seçim aşamasında, kullanıcıların seçim yaparken
değerlendirebileceği sonuçlar ortaya konulmuştur. Ayrıca
farklı SQL ve NoSQL veri tabanları, M2M sistemler için
performans bakımından karşılaştırılmıştır.
2.
Algılayıcı Verileri
M2M sistemde algılayıcıdan gelen verilerin boyutu ve türü
kullanılan algılayıcıya göre değişmektedir. Örneğin basınç
ölçümü yapan bir algılayıcıdan gelen veri ile sıcaklık
ölçümü yapan bir algılayıcıdan gelen veri birbirinden
farklıdır. M2M uygulaması hangi özel alanda
gerçekleştiriliyor ise o alana uygun algılayıcılar kullanmak
gerekir. Veriler uygun şekilde alınır ve veri tabanına
kaydedilir.
Bir “Soğuk Zincir Takip ve Stok Yönetim Sistemi” projesi
ile aşı ve anti serumların Türkiye Halk Sağlığı Kurumu’na
bağlı 10.000 bölgesel depoya nakli sağlanmıştır [5]. Bu
Aşı Takip Sisteminde aşıların bulunduğu ortamların
sıcaklık ölçümleri belirli aralıklarla yapılarak hem
yetkililere sunulmakta hem de veriler düzenli olarak
kaydedilmektedir. Bu verilerin kayıt esnasında sadece
sıcaklık değeri kaydedilmeyebilir. Ölçümün yapıldığı tarih
ve saati de verilere ekleyen zaman damgası veya diğer
tanımlayıcı verilerin de saklanması istenilebilir. Veriler
üzerine yapılacak her türlü eklemeler verileri oldukça
büyük bir boyuta getirmekte saklanmasını ve işlenmesini
zorlaştırmaktadır. Bu nedenden dolayı en uygun veri
tabanını seçmek oldukça önemlidir.
M2M sistemlerinde veriler düzenli olarak veri tabanına
kaydedilirken yazma işleminde farklı veri tabanlarında
farklı dalgalanmalar gözlenmektedir. Fakat okuma işlemi
sırsında birden fazla kullanıcı birden farklı platformda
verileri analiz etmek için veri tabanından istekte
bulunabilir. Bu işlem sırasında Şekil 1’de görüldüğü gibi
veri tabanına aşırı yüklenme olabilmektedir.
Şekil 1. Veri Tabanında Algılayıcı Verilerini Yazma ve
Okuma İşlemi [3].
3.
SQL Sorgu Dili
Veri tabanı uygulamaları için kullanılan en yaygın sorgu
dilidir. Kullanıcı, sorgu dili ile gerçekleştirmek istediği
işlemi yalın bir biçimde ifade eder. IBM, bir ilişkisel veri
tabanı yönetim sistemi geliştirmek amacıyla System/R adlı
bir proje başlatarak bu sistem için Structured English
Query Language (SEQUEL) adında bir sorgu dili
geliştirilmeye başlamıştır. 1979’ da tamamlanan bu proje
sırasında geliştirilen dilin adı Structured Query Language
(SQL) olarak değiştirilmiştir [6]. System/R projesini
izleyen bir grup mühendis, ilişkisel veri tabanındaki
potansiyeli görmüş ve Relational Software Inc. Adında bir
şirket kurmuşlardır. 1979’da ORACLE adını verdikleri ilk
ticari ilişkisel veri tabanı yönetim sistemini geliştirmişler
ve SQL’i bu sistemde sorgu dili olarak kullanmışlardır.
SQL sorgu dilinde oluşturulmuş bir sorgu aşağıda yer
almaktadır.
SELECT ADI, SICAKLIK, SAAT
SENSOR WHERE ALGILAYICI_NO = 10;
FROM
Yukarıdaki sorgu ile “10 numaralı algılayıcı için ad,
sıcaklık ve saat” bilgilerinin bulunmak istendiği kolayca
anlaşılmaktadır. SQL’ in kullanıldığı veri tabanı içerisinde
veriler belirli bir şema içerisinde tutulmaktadır. Şemayı
oluşturan bileşenler ise satır ve sütunlardır.
3.1. SQL Veri Tabanı Temel Özellikleri
 İlişkisel veri tabanı, önceden tanımlanmış ve
kategorize edilmiş tablolar içerisine veri yerleştirme
biçimidir.
 Her tablo sütunları bir veya daha fazla veri kategorisi
içerir.
 Her satır, sütunlara göre belirlenen kategoriler içinde
eşsiz bir veri örneğini içerir.
 Kullanıcı veri tabanı tablosunun yapısını bilmeden
veri tabanındaki veriye erişebilirsiniz.
SQL veri tabanı sınırlılıklarından olan ölçeklenebilirlik ve
karmaşıklık aşağıda açıklanmaya çalışılmıştır.
Ölçeklenebilirlik: İlişkisel veri tabanında ölçeklenebilirlik
çok güçlü ve pahalı sunucular ile gerçekleştirilebilir. Tek
bir yerden depo edilmeli prensibine dayanan bu veri tabanı
birden fazla yerdeki kaynakların birleştirilmesi oldukça
zordur.
Karmaşıklık: SQL sunucu verilerini tablolar içerisinde
saklar bu durum farklı boyutta verilerin girilmesinde
zorluklar ortaya çıkarır.
4.
veri işlemlerini desteklemesi, genişletilmesinin kolay
olması ve düşük maliyetinin olmasıdır [4].
NoSQL veri tabanlarının belge odaklı olması ile farklı
dosya yapıları bir arada kullanılabilmektedir. Bir NoSQL
veri tabanı XML, JSON veya BSON dosya yapılarını
destekleyebilir. Veriler belirtilen bu dosya serileri halinde
bulunmaktadır.
4.1. NoSQL Sistemlerinin Çeşitleri ve Farkları
Günümüzde farklı teknolojilerde bulunan NoSQL veri
tabanlarının SQL gibi standartları olmadığı için kendi
aralarında da çeşitli farklılıklar göstermektedirler. HBase,
Cassandra, Redis, MongoDB, Voldemort, CouchDB,
Dynomite, Hypertable günümüzde kullanılan NoSQL veri
tabanlarından bazılarıdır [7]. Her sistemin veri tutarlılığı
ve veri erişimi ile ilgili farklı özellikleri ve yetenekleri
bulunmaktadır. Fakat NoSQL veri tabanlarını genel olarak
veri modeline göre üç grupta toplamak mümkündür.

Döküman Tabanlı: Bu sistemlerde bir kayıt
döküman olarak isimlendirilir. Dökümanlar genelde
JSON veya XML formatında saklanır. Bu
dökümanların içerisinde sınırsız alan oluşturulabilir.
MongoDB, CouchDB, HBase, Cassandra ve Amazon
SimpleDB bunlara örnektir.

Anahtar / Değer Tabanlı: Bu sistemlerde anahtara
karşılık gelen tek bir bilgi bulunur. Kolon kavramı
yoktur. AzureTable Storage, Redis, MemcacheDB ve
BerkeleyDB bunlara örnektir.

Grafik Tabanlı: Diğerlerinden farklı olarak verilerin
arasındaki
ilişkiyi
de
tutan, Graph
Theory modelindeki sistemlerdir. Neo4J, FlockDB
bunlara örnektir [8].
5.
SQL ve NoSQL
NoSQL
NoSQL veri tabanı kavramı, yıllardır bilişim dünyasında
kullanılan ilişkisel veri tabanı sistemlerine alternatif olarak
ortaya çıkmıştır. NoSQL, günümüzde İnternet ortamında
giderek büyüyen verileri depolayabilmek ve yüksek
erişilebilirliğin yanında yatay ölçeklenebilen sistemlere
verilen genel bir isim olarak anılmaktadır.
Google’ın
BigTable
ve
Amazon’un
Dynamo
teknolojisinde kullandığı ilişkisel olmayan veri
tabanındaki başarısı ve aynı zamanda NoSQL veri
tabanlarının ölçeklenebilirliği, hızı, erişim kolaylığı,
maliyeti vb. gibi kavramlarda sağladığı üstünlük NoSQL
veri tabanlarının popülaritesini arttırmıştır [1].
Sorgulama dili olarak SQL kullanmayan NoSQL veri
tabanları için 21.12.2014 tarihinde sisteme yazılmış olan
algılayıcı bilgilerini listeleyen örnek bir sorgu aşağıda
verilmiştir.
db.sensor.find({”create_date”: ”2014-12-21”})
Günümüzde çeşitli NoSQL veri tabanları bulunmaktadır.
Bu farklılıkların temeli CAP teoremine dayanmaktadır ve
günümüzde geliştirilen NoSQL veri tabanlarının
raporlama ve SQL standartlarını desteklememesi gibi
kısıtları vardır. NoSQL veri tabanlarının sağladığı
avantajlar ise şunlardır; veri okuma ve yazma hızı, toplu
Aşağıda altı farklı özellik ile SQL ve NoSQL veri
tabanları karşılaştırılmıştır [9].
1- İşlem Güvenirliği: İşlem güvenirliği ilişkisel veri
tabanlarında oldukça yüksek olmasına rağmen
NoSQL veri tabanı sistemlerinde oldukça düşüktür.
Bunun nedeni ise ilişkisel veri tabanı sistemlerinin
ACID (Atomicity– Consistency–Isolation-Durability)
işlemlerini desteklemesidir.
2- Veri Modeli: SQL veri tabanı sistemleri verileri tablo
yapılarında saklar ve SQL sorgu dili ile bu verilere
erişimi sağlamaktadır. SQL veri tabanlarında aynı
anda birden fazla tablo üzerinde işlem yapılabilir ve
kolon sayıları arttırılabilir. Veri tabanını büyütmek
amacıyla ise dikey ölçeklenebilirlik sağlanırken yatay
ölçeklenebilirlik kısıtlıdır. NoSQL veri tabanı
sistemlerinde ise yatay ölçeklenebilirlik hat safhada
kullanıcıya sunarken veriler genellikle anahtar/değer
tabanlı olarak kolon kavramı olmadan saklanır [3].
seçilmesi gerektiği aşağıdaki özellikleri vurgulanarak
belirtilmiştir [10].
NoSQL içerisinde kolonlardan bağımsız saklanan her
bir veri parçası basit anahtar değerleri ile veri tabanı
sistemine gönderilmektedir. Benzersiz bir ağ yapısı ile
yerleştirilen verileri okurken yüksek yoğunluk altında
bile üst düzey performans alınarak düşük gecikme ile
işlem yapılabilmektedir. Veriler NoSQL veri
tabanlarında saklanırken nesne tabanlı mimariye
benzer şekilde tutulmaktadır. Bu benzerlik yapısal
olmayan ve farklılık gösteren verilerin saklanmasını
kolaylaştırmaktadır.
3- Ölçeklenebilirlik:
Ölçeklenebilirlik
NoSQL
kavramının çıkmasında önemli ölçüde paya sahiptir.
İlişkisel veri tabanlarında büyüme dikey olarak
sağlanırken, büyük verilerin gereksinim duyduğu
ölçüye ulaşmak için donanım gereksinimi duyulur ve
bu gereksinim oldukça pahalıdır. NoSQL ise yatay
olarak ölçeklenebilirlik sunmakta ve büyük verilerin
saklanmasını kolaylaştırdığı gibi maliyetini de
azaltmaktadır.
4- Karmaşıklık: İlişkisel veri tabanlarında verilerin
tablolarda tutulması ve bir tablonun birden fazla tablo
ile ilişkisinin olması karmaşıklığı beraberinde
getirmektedir. Özellikle yapısal olmayan verilerde
karmaşıklık daha da artmaktadır. Belge tabanlı
NoSQL veri tabanlarında ise bu durum farklıdır.
Farklı belgelerde saklanan veriler birbirlerinden
etkilenmemektedirler.
5- Hata Kurtarma: Veri tabanında oluşabilecek
problemler kilitlenme ve verilerde hasara yol
açabilmektedir. İlişkisel veri tabanı sistemleri
özellikle log yönetimi ile veri tabanını izleme ve hata
kontrolü sağlamada oldukça başarılıdır. NoSQL veri
tabanları ise kendi aralarında da farklı mimarilere
sahip olduğundan her veri tabanı bu duruma farklı bir
çözüm bulmaya çalışmıştır. Örneğin MongoDB
kazalardan kaçınmak için yedekleme mekanizmasına
sahiptir.
6- Güvenlik: Günümüzde yaygın olarak kullanılan
ilişkisel veri tabanları üzerine yıllardır güvenlik
çalışmaları yapılmış ve bu çalışmalar meyvesini
vermiştir. Basit olarak SQL Injection veya Cross Site
Scripting gibi işlemlere karşı önlemler alınmaya
çalışılmıştır fakat NoSQL performans bakımından ön
plana çıktığından güvenlik üzerine çalışmalar geri
planda kalmıştır. Bu nedenden dolayı veri tabanı
seçiminde güvenlik kısmının iyice araştırılması
gerekmektedir.
Yukarıdaki maddelerin yanı sıra Datastax firmasının
sunduğu bir uygulama için neden NoSQL veri tabanının

Büyük verinin var olması,

Geliştirilen uygulamalar için sürekli kullanılabilir
verilerin olması,

Platformdan bağımsız sistemlerin oluşturulma isteği,

Modern işlem desteğine olan ihtiyaç,

Daha esnek bir veri modelinin gerekliliği,

Daha iyi bir mimari isteği,
Couchbase firmasına göre ise NoSQL veri tabanlarının
öne çıkan özellikleri ve NoSQL’in geliştiricilere sunduğu
yetenekler aşağıdaki gibidir [11].



Uygulamada verimliliği arttırmak için daha esnek veri
modeli,
Dinamik ölçeklendirme ile büyük verileri depolama
maliyetlerini azaltmak ve birden fazla kullanıcıyı
desteklemek,
Çok duyarlı uygulamalar için kullanıcı beklentilerini
karşılayan ve daha karmaşık verilerin işlenmesi için
geliştirilmiş performans.
Görüldüğü gibi hem veri tabanı üreticileri hem de
geliştiriciler için NoSQL veri tabanları oldukça önemli
faydalar sağlamaktadırlar. Tek eksik güvenlik ve tutarlılık
kısmında görülse de geliştirilmeye çalışılan uygulamalar
için veri tabanı seçilirken artı ve eksileri iyi
değerlendirilmelidir.
6.
M2M Sistemlerinde NoSQL
Doğru veri tabanı sistemini projeye başlamadan önce
seçmek bazen hayati bir önem taşıyabilir. Doğru projede
doğru veri tabanı sistemi ile oldukça yüksek verimlilik
sağlanabilir. İnternet ortamındaki verilerin gün geçtikçe
büyümesinin nedenlerinden biri de Nesnelerin İnterneti ve
M2M kavramlarıdır. 2020 yılı itibariyle Nesnelerin
İnterneti’nin parçası olması öngörülen nesnelerin (otonom)
sayısı 30 milyar civarındadır [12]. Bu sistemler
haberleşmeyi algılayıcılar sayesinde yaptıkları gibi anlık
olarak konum, hareket, sıcaklık, basınç vb. değerleri hem
birbiri ile paylaşırken hem de depolamaktadırlar.
Depolanan bu veriler zamanla büyük boyutlara
ulaşabilmektedir. Büyük boyutlara ulaşan bu veri yapısını
saklamak ve işlemek oldukça maliyetli ve zordur. İşte
tamda bu noktada yeni teknolojileri kullanarak proje
geliştirmek oldukça önemlidir.
Son yıllarda ortaya çıkan NoSQL kavramı bir sistemde
farklı yapıdaki verileri tutmaya olanak sağlamaktadır.
Örneğin bir sıcaklık algılayıcısından gelen veri tipleri ile
basınç algılayıcısından gelen veri tipi birbirinden farklı
olabilir. SQL veri tabanında bu farklılık için ayrı ayrı tablo
tasarımı yapmak gerekirken belge tabanlı bir NoSQL veri
tabanı tablolardan bağımsız olduğu için veriler farklı tip ve
boyutlarda tutulabilir.
M2M sistemlerde veriler bir veya birden fazla
algılayıcıdan alınmaktadır. Bu verilerin veri tabanına
yazımı sırasında, veri tabanı belirli aralıklarla yoğunluk
yaşayabilir aynı zamanda verileri veri tabanından okuma
işleminde birden fazla kullanıcı veri tabanından farklı
isteklerde bulunabilir. Bu durumda veri tabanının cevap
verme süresi geç olur ise sistem kilitlenmelerine yol
açılabilmektedir. Bu durumu engelleyebilmek için
performans bakımından üst düzey bir belge tabanlı
NoSQL veri tabanı tercih nedeni olmalıdır. Bunun için ise
MongoDB kendini kanıtlamış bir sistemdir ve Türkiye
Halk Sağlığı Kurumu “Soğuk Zincir Takip ve Stok
Yönetim Sistemi” projesinde de kullanılmaktadır [5].
Sanal ve fiziksel veri tabanları üzerine yapılan bir
çalışmada birden fazla okuma ve yazma işlemi için
sistemin performansı Şekil 2’de gösterilmiştir.
Şekil 2. Veri Tabanı Karşılaştırılması [3].
Şekil 2’ de görüldüğü çalışma fiziksel ve sanal olarak en
çok kullanılan ücretsiz NoSQL veri tabanları olan
Cassandra ve MongoDB üzerine ve ilişkisel veri tabanı
olan PostgreSQL üzerine yapılmıştır. Bu çalışmada veri
tabanları aynı anda birden fazla okuma ve yazma işlemine
tabi tutulmuştur. Performansların değerlendirildiği bu
çalışmada NoSQL veri tabanlarının çoklu işlemlerde
başarılı olduğu tespit edilmiştir. Bu çalışma M2M
sistemlerindeki çoklu işlemler için veri tabanı seçimine
ışık tutmaktadır.
Banka işlemlerinde veya önemli kişisel bilgilerin
tutulduğu veri tabanlarında güvenliğin ön planda olması
gerekmektedir. NoSQL veri tabanlarında ise güvenlik
günümüzde tam olgunlaşmamıştır. Geliştirme aşamasında
farklı yazılım senaryoları ile güvenlik arttırılmaya
çalışılabilir fakat yetersiz kaldığı durumları göz ardı
etmemek gerektiğinden bu tip veri tabanlarını üst düzey
güvenlik gerektiren projelerde kullanmak en son tercih
olmalıdır.
Maliyet veri tabanları için önemlidir. Saklanılan veri
boyutu ne kadar artarsa depolama gereksinimi de bir o
kadar artmaktadır. İlişkisel veri tabanlarında kolonlar
dikey ölçeklendiğinden veri tabanı için yeni donanımlar
satın almak gerekebilir. İlişkisel veri tabanlarını yatay
ölçeklemek zordur. NoSQL de ise bu durum farklıdır.
Yatay ölçeklenebilen NoSQL veri tabanları maliyeti
oldukça düşürmektedir ve benzersiz bir ağ yapısı ile
performansı arttırmaktadır.
7.
Sonuç ve Öneriler
Son yıllarda teknolojideki gelişmeler veri tabanı
sistemlerinde de değişikliklere yol açmıştır. Bu değişiklik
NoSQL kavramını günümüz dünyasına yerleştirirken
geliştirilecek projelere başlamadan önce veri tabanı
seçiminde oldukça geniş bir araştırma yapmaya
zorlamaktadır. Bu çalışmada M2M sistem uygulaması
geliştirilen bir projede kullanılacak olan veri tabanının
hangi
özelliklerde
seçilmesi
gerektiği
üzerinde
durulmuştur. Öncelikle SQL ve NoSQL veri tabanları
incelenmiş ve CAP teoreminin veri tabanları üzerine etkisi
araştırılmıştır daha sonra NoSQL çeşitleri incelenmiş ve
belge tabanlı veri tabanı sistemlerinin önemi üzerine
durulmuştur. Yatay ölçeklenebilirlik büyük veriler için
önemli olduğundan ve yapılan karşılaştırmalar sonucu
M2M sistemler için NoSQL veri tabanı tercih edilmelidir
sonucuna varılmıştır. Ayrıca farklı durumlarda SQL ve
NoSQL veri tabanı sistemleri karşılaştırılmıştır ve M2M
sistemler için en uygun veri tabanının seçilmesi için
bilgiler sunulmuştur.
İlişkisel veri tabanı ve NoSQL veri tabanlarının kendine
göre avantaj ve dezavantajları bulunmaktadır. M2M
sistemlerinde algılayıcılardan veri tabanına ve sisteme
sürekli veri akışı olacağından hız oldukça önemlidir.
NoSQL veri tabanı yazılımı olarak MongoDB gibi birden
fazla ücretsiz yazılımda mevcuttur. MongoDB belge veri
modeli, zengin sorgu desteği, yatay ölçeklenebilirlik,
yüksek kullanılabilirlik, esneklik ve dinamik şema gibi
birçok özelliği geliştiricilere sunmaktadır. Veri saklama
işleminde JSON yapısını kullanmaya izin veren NoSQL
veri tabanı ile Temsili Durum Transferi (Representational
State Transfer: RestFUL) web servislerinin kullanıldığı
sistemler, daha dinamik bir yapı ve platformdan bağımsız
uygulamalar geliştirilmesine olanak sağlayacaktır. Bu
nedenlerden dolayı M2M projelerinde veri tabanı olarak
NoSQL veri tabanlarını kullanmak uygulamalarda başarılı
sonuçlar almayı kolaylaştıracaktır.
8.
Kaynaklar
[1] Yishan L., Sathiamoorthy M., “A performance
comparison of SQL and NoSQL databases”,
Communications, Computers and Signal Processing
(PACRIM), 2013 IEEE Pacific Rim, Conference on, 27-29
Aug. (2013)
[2] Lior O., Nurit G., Yaron G., Ehud G., Jenny A.,
“Security Issues in NoSQL Databases”, Trust, Security
and Privacy in Computing and Communications
(TrustCom), 2011 IEEE 10th International Conference on,
16-18 Nov. (2011)
[3] Jan Sipke V., Bram W., Robert J. M., “Sensor Data
Storage Performance: SQL or NoSQL, Physical or
Virtual”, Cloud Computing (CLOUD), 2012 IEEE 5th
International Conference on, 24-29 June (2012)
[4] Han J., Haihong E., Le G., Du J., “Survey on NoSQL
database”, Pervasive Computing and Applications
(ICPCA), 2011 6th International Conference on, 26-28
Oct. (2011)
[5] Ankaref, Gökhan F. Türkiye Bilişim Dergisi, Sayfa
106, Yıl 42, Sayı 171, Aralık (2014)
[6] Donald D. C., Morton M. A., Michael W. B., and
others., “A History and Evaluation of System R” IBM
Research Laboratory San Jose, California, Oct. (1981)
[7] Rick C., “Scalable SQL and NoSQL Data Stores”,
SIGMOD Record, (Vol.39, No.4), December (2010)
[8] “NoSQL Nedir” , http://devveri.com/nosql-nedir
(Erişim Tarihi: 03.12.2014)
[9] Mohamed A. M., Obay G. A., Mohammed O.I.,
“Relational vs. NoSQL Databases: A Survey”,
International Journal of Computer and Information
Technology (ISSN: 2279 – 0764) Volume 03 – Issue 03,
May (2014)
[10] White Paper BY DATASTAX CORPORATION
October (2013)
[11] “Why NoSQL” ,
http://www.couchbase.com/nosql-resources/what-is-nosql (Erişim Tarihi:03.12.2014)
[12] IDC, “Worldwide Internet of Things (IoT) 2013-2020
Forecast: Billions of Things trillions Of Dollars”, Belge
No. 243661, Ekim 2013
Download