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