Günümüzde aldığımız hizmetlerin çoğu internet üzerinden uygulama yazılımlarıyla kolayca erişilebilir durumda. Firmalar, müşteri memnuniyetini en üst düzeyde tutmak için her türlü müşteri bilgisini saklı tutuyor. Ancak saklanan ayrıntılı bilgiler yer darlığına yol açıyor. Bu noktada büyük veri çağında yatırımcılar ve teknoloji girişimcileri büyük veri yani big data konusuna odaklanıyor. Büyük verileri işlenmesi, saklanması ve irdelenmesi yani analizi önceki nesil veri tabanlarından farklı yöntemler gerektiren veriler olarak düşünebilirsiniz. Başka bir deyişle, büyük veri herhangi bir ilişkisel veritabanıyla yönetilemeyecek büyüklükte olup büyümeye sürekli olarak devam eden verileri tarif etmek için kullanılır. Verinin büyümesiyle birlikte ortaya çıkacak sorunlardan bazıları şunlardır:
Verinin saklanması,
veriye erişim hızı,
veri tipindeki çeşitlilik,
doğru veriye yetkili kişilerin erişebilmesi …
Yani toplumsal medya paylaşımları, kendini tekrarlayan bilgi akışları, ağ günlükleri, bloglar, fotoğraflar, log dosyaları gibi çeşitli kaynaklardan toplanan veriler veri patlamasının bir parçasıdır. Bu yapılandırılmamış yani dağınık halde duran verilerin değerli kısımlarının anlamlı ve işlenebilir hale gelmesi başka bir deyişle analiz edilmesi ve iş verimliliği için kullanılması önemli bir hal alıyor.
Bunlardan çıkarılabileceği gibi büyük veri trendini oluşturan etkenler şöyledir:
Verinin çok fazla olması,
Hızlı çoğalması,
Çok çeşitli olması ve
Değerli olması.
Başka bir deyişle büyük veri oluşumundaki hızlı artışın nedenlerini şöyle de sıralayabiliriz:
Sosyal ağ etkileşimlerinin büyüyen hacmi,
Lokasyon duyarlı cihazların artması,
Akıllı sensörlerin sayısındaki artış,
Video ve medya kaynakları …
Yapılandırılmış veriler: Ürün, kategori, müşteri, fatura, ödeme …
Yapılandırılmamış veriler: Tweet, paylaşım, like, e-posta, video, tıklama …
%10 yapılandırılmış, %90 yapılandırılmamış veri.
Büyük Veri Bileşenleri Nelerdir?
1.Volume: Kurumların, gelecekteki veri hacmini düşünerek arşivleme, entegrasyon, işleme, saklama gibi teknolojilerin bu büyüklükteki verilerle nasıl başa çıkacağını kurgulaması gereklidir. Facebook 70+PB, eBay 5+PB
2.Velocity: Büyük verinin üretilme hızı arttıkça transaction sayısı ve çeşitlilikte aynı hızla artıyor. Twitterde her gün 12TB tweet atılıyor.
3.Variety: Yeni üretilen her teknoloji farklı formatlarda veriler üretebilir. Bu noktada telefonlardan, tabletlerden ve entegre devrelerden gelen bu çeşitlilik için veri tipi düşünülmelidir. Ayrıca bu veriler farklı dillerde nonunicode ise birbirlerine dönüşmeleri de gerekir. Metin, sensör verileri, ses, görüntü, log dosyaları.
4.Verification: Verinin akış sırasında doğru güvenlik seviyesinde olması önemlidir. Yani, verinin doğru kişiler tarafından görülmesi veya gizli kalması gerekebilir. Doğrulama bu noktada veri güvenliği ile ilgilidir diyebiliriz.
5.Value: Büyük veri üretim ve işlemeden sonra kurum için artı bir değere sahip olmalıdır. Yani kuruma karar veriş sürecinde yardımcı olmalıdır.Bir örnekle açıklayacak olursak, sağlık konusunda stratejik kararlar alan bir devlet kurumu anlık olarak bölge, il ,ilçe, ilaç dağılımı gibi bilgileri görebilmelidir. Ayrıca bu durumu bankalar ya da hastaneler içinde düşünebiliriz.
Büyük Veri Kullanımıyla Ne Elde Edilir?
- Büyük veri, firmalar için müşterilere ulaşma konusunda daha derin kararlar alınmasını sağlar.
- Doğru sipariş alma, alınan siparişteki ayrıntılar yani bilgi toplama performans artırıcı eylemlerdendir.
- Büyük veri, dar segmentasyondaki müşterilere özel ürün veya hizmet sunma olanağı verir.
- Karmaşık bilgi anlamlandırıldıktan sonra firmalar gelecekte geliştireceği ürün veya hizmet hakkında bilgi sahibi olabilirler.
Büyük Veri Analizi Nasıl Yapılıyor?
NoSQL, internetin gün geçtikçe artan verisini depolayabilmek ve yüksek trafiğe sahip sistemlerin ihtiyaçlarına cevap verebilmek amacıyla ortaya çıkmış sistemlere verilen genel addır. İlişkisel veri tabanlarında verilerimizi tablo sütunlarında saklıyarak bu sütunları diğer tablolardaki sütunlarla ilişkilendirmenize olanak tanıyor. İlişkilendirdiğimiz veriler arasında kısıtlamaları belirleyebiliyorsunuz. Not Only Sql açılımıyla geçen NOSQL de tablo yok. Tutmak istediğimiz verileri Json veya xml formatında dökümanlar halinde kaydediyorsunuz. Ayrıca yeni bir kolon açmak yerine jsonumuzda yeni bir parameter oluşturuyorsunuz. Join yok. Büyük karmaşık sorgular yok. Bir kolon açmak istediğimizde json veya xml e yeni bir kolon eklemek yeterli oluyor.
NoSQL Ne Zaman Kullanılır?
Veri çok büyükse,
RDBMS ile saklamak maliyetli oluyorsa,
Veriyi daha hızlı okumak gerekiyorsa,
Çok fazla yazma işlemi varsa,
Veriler transactional değilse.
Örneğin,
- Bir haber sitesini düşünürsek, içinde birçok kategori, alt kategori, onlarca haber, yüzlerce tag mevcuttur. Bu bilgiler sürekli güncellenmekte ve yerine yenileri eklenmektedir. Bu veri tabanını yönetmenin güçlüğünü tahmin edebilirsiniz.
- Hepsiburada.com binlerce çeşit ürün, her bir ürünün özellikleri, kategorileri ve bunların alt kategorilerini barındırır. Bunlar sürekli değişmektedir. Yeni bir kategori eklenmekte veya varolan kategorinin özellikleri değiştirilmektedir. Bu durumda da aynı şekilde veritabanını yönetmek zorlaşır.
Fire&Forget Prensibi Nedir?
NoSQL çalışma prensibidir. Verinin büyük önem arzettiği uygulamalarda NoSQL kullanmak doğru değildir. Çünkü bu sistem RAM üzerinde çalışmaktadır. Yani, herhangi bir olumsuzlukla karşılaştığımızda güncelleme ve yedekleme sistemine güvenemeyiz. Örneğin, banka uygulamaları için bu nedenle uygun değildir diyebiliriz. Çünkü ciddi bir izolasyon kaybı yaratır. Transactionda birden fazla işlemi aynı anda yapmak mümkün değildir. (TRANSACTION: Bir veritabanı üzerinde gerçekleştirilen bir dizi operasyonu – insert, select, update, delete – sarmalayan mekanizmanın adıdır. Birden çok işlemin bir arada yapıldığı durumlarda eğer parçayı oluşturan işlemlerden herhangi birinde sorun olursa tüm işlemleri iptal eder. ”Ya hep ya hiç” prensibi.) Örneğin, dört ayrı server de çalıştığımızı düşünelim. Birinci server de güncellenen bir verinin dördüncü server de ne zaman güncelleneceği büyük bir problemdir. NoSQL, RAM üzeinde çalıştığı için bu sorunun cevabını bilemeyenilirsiniz. Bunların yanısıra, NoSQL sistemin yalnızca bir kısmı içinde kullanılabilir.
NoSql’in İlişkisel Veritabanlarından Farkları:
- Öncelikle, ilişkisel veri tabanları transaction tabanlı çalışırlar ve veri bütünlüğü için ACID
kurallarına uyarlar. Ancak birçok NoSQL sistem için bu kavram bulunmuyor. Çünkü CAP
Teorisi ne göre, dağıtık bir sistem aynı anda tutarlılık (consistency), müsaitlik (availability) ve parçalanma payı (partition tolerance) kavramlarının hepsini birden sağlayamaz. Bunları ayrı ayrı şu şekilde daha iyi anlamlandırabiliriz:
Tutarlılık: Dağıtık bir sistemin her bir parçasından aynı veriye erişebilme.
Müsaitlik: Aynı anda bütün isteklere cevap verebilme.
Parçalanma Payı: Kaybedilen paketlere rağmen verinin bütününü kaybetmeme.
NoSQL sistemlerde bunlardan birinde mutlaka bir sorun çıkar.
Yukarıda geçen ACID kavramını açıklayalım:
ACID, veri kaybına ya da bozulmasına imkan verilmemesi gereken sistemler için çok
önemlidir.Bankacılık, alışveriş uygulamaları,… için NoSQL kullanmak yanlış bir seçim
olacaktır.
ATOMICITY (Bölünmezlik)
CONSISTENCY (Tutarlılık)
ISOLATION (İzolasyon)
DURABILITY (Dayanıklılık)
Ayrıca NoSQL sistemlerde yatayda büyüme amaçlanmıştır. Veri parçalara bölünür, belirli
sayıdaki kopyaları dağıtık sistemin farklı parçalarına gönderilir ve böylece sistemde
tutarlılık sağlanır. Bu durumda paket kaybı yaşanabilir ama verinin tamamen
kaybolmasının önüne geçilmiş olunur. Buna ek olarak, veri bölündüğü için her bir parçaya düşen yükte dengelenmiş olur.
- İkinci olarak, NoSQL sistemler sabit tablo tanımlarına sahip değillerdir. Yani, yeni kolonlar eklenebilir ve kayıtlar arasında kolon farklılıkları olabilir. Bu bize denormalizasyon kolaylığı sağlar. (NORMALİZASYON: Çok fazla satır ve sütunlardan oluşan bir tabloyu tekrardan arındırmak için daha az satır ve sütun içeren alt kümelerine ayrıştırma işlemidir. DENORMALİZASYON ise verinin okunması ve sorgulanmasında veri mototunun bilgiyi saklamak için önce bilgiye erişip işlem yapması gerekir böylece tablo sayısını azaltarak performans sağlamış olur.)
- Üçüncü olarak, Join işleminden bahsedelim. NoSQL de join işlemi bazı sıkıntılara neden
olur. Bunu aşmak için bu işlem elle yapılır. Çünkü NoSQL de verileri parçalara böleriz ve
bunun sonucunda birleştirilecek veriler farklı parçalarda olabilir. Yani, önce x verisi çekilir
sonra y ve programatik olarak birleştirilir. Böylece sistemde birleştirme operasyonu
yapmak yerine veri denormalize tutularak bu verilere erişim kolaylaştırılır. Bu durumda
kendini tekrar eden veriler olacaktır. Ancak genel performans düşünülecek olursa bu
önemsizdir.
- Dördüncü olarak, NoSQL sistemlerin bazılarında Map/Reduce kullanılmaktadır. Karmaşık
analizler Map/Reduce ile kolay bir şekilde gerçekleştirilir.
- Beşinci olarak, NoSQL de anahtarlar üzerinden veriye hızlı erişilir. Örneğin, zamana göre
artan prefix (ön ek), kaydın anahtarı ile birleştirilerek tek seferde ilgili kaydın belirli bir
zaman aralığındaki kayıtlarına erişmek mümkündür.