38
NoSQL Yazılımcı Bakışıyla Burak Selim Şenyurt Senior Software Consultant http://www.buraksenyurt.com

NoSQL - Yazılımcı Bakışıyla

Embed Size (px)

Citation preview

Page 1: NoSQL - Yazılımcı Bakışıyla

NoSQLYazılımcı Bakışıyla

Burak Selim Şenyurt

Senior Software Consultanthttp://www.buraksenyurt.com

Page 2: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

İçerikBaşlangıç

Bazı NoSQL VakalarıGeçmişten Bugüne

Veri(Data)Popüler Veri Depolama Modeli – RDBMS

Artılar EksilerRDBMS Denince BenKarakteri(ACID)

Sıkıntılarİstatistiki GerçeklerSorunlar

Ölçekleme DemişkenMahallenin Yeni Delikanlısı - NoSQL

TanımıGenel ÖzellikleriÇeşitleriGerçek Hayat KullanımlarıPeki Ne Zaman? (CAP)

RDBMS vs NoSQLKaynaklar

Page 3: NoSQL - Yazılımcı Bakışıyla

Başlangıç

#GoogleMapReduce, #LiveJournalMemCached, #AmazonDynamoDB

Page 4: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Amazon, 7/24 bir web siparişini kabul edebilmek,MarkLogic, sıradan donanımlı sunucularda sakladığı devasa boyuttaki XML doküman koleksiyonları üzerinde sorgulama yapabilmek,

Google, milyarlarca sayfa üzerinden yapılan arama sonuçlarını indekslerken düşük maliyetli sunucuları kullanabilmek ve çok sayıda kolonla ifade edilebilecek veri tablolarını dağıtık mimaride olabildiğince esnek bir şekilde tutabilmek,

Live Journal, veritabanı sorgularının performansını arttırmak,

Bazı NoSQL Vakaları

Memcached

MarkLogic

Dynamo

MapReduce

BigTable

Page 5: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Geçmişten Bugüne

1980 1990 2000 2010

RDBMS

OODBMS

RDBMSHakim

Eric Evansno:sql(east) 2009 - Atlanta

Carlo Strozzi1998

Page 6: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Page 7: NoSQL - Yazılımcı Bakışıyla

Veri

#data

Page 8: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Veri?

Veri Nedir?Nasıl Saklanır?

Page 9: NoSQL - Yazılımcı Bakışıyla

RDBMS

#RDBMS, #SQLServer, #Oracle, #MySQL, #DB2…

Popüler Veri Depolama Modeli

Page 10: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Artılar EksilerACID ilkeleri geçerlidir.SQL ifadelerinin çoğu açık kaynaklar dahil diğer RDBMS’ler ile de çalışır.Yetki bazlı veri sunulmasına izin verir.Türlendirilmiş sütunlar ve kıstaslar verinin eklenmeden önce denetlenmesini sağlar.

Object-Relational Mapping(O/RM) karmaşık olabilir..Join gibi işlemler gerektiğinde veri tabanının Scale-Out edilmesi zordur.Sharding i destekler ama ek uygulama kodu gerektirir ve yeteri kadar efektif değildir.Yüksek çeşitlilik gösteren verilerin tablo bazlı saklanması zordur.

+-

Page 11: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

RDBMS Denince Ben

ProductId

Number

Title

Quantity

CategoryID

CategoryID

Title

Description

CustomerID

Name

LastName

BirthDate

ID CustomerID

AddressID

AddressID

Line1

Line2

City

Street

PostalCode

1

*

1

1

*

*

Orders

OrderDetails

Page 12: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

RDBMS – Karakteri (ACID)

Atomic : Bir transaction, içerisindeki görevlerin tamamı başarılı olduğu takdirde başarılı sayılır. Ya hep ya hiç

Consistent : Bir transaction, sistemi tutarlı bir konumdan diğer bir tutarlı konuma taşıyabilmelidir. Veritabanı bütünlüğü

Isolated : Transaction’ lar birbirlerinden izole çalışmalıdır. Aynı anda çalışan transaction’ lar birbirlerinin sonuçlarını etkilememelidir. İşime karışma *

Durable : Bir transaction başarılı olduğunda içerisindeki tüm işlemler kalıcı olarak saklanır ve geri alınmazlar. Sistemde bir hata olsa dahi korunurlar. Son sözümü söyledim

* Aksi durumlar söz konusu olabilir. Bunun için izolasyon seviyeleri ele alınır.

Page 13: NoSQL - Yazılımcı Bakışıyla

Sıkıntılar

#HugeData,#BigData, #Scalability, #Variety,

Page 14: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

İstatistiki GerçeklerFirma İstatistik Değer

Facebook

Aylık paylaşım sayısı 70 Milyar

Entegre çalışan Uygulama ve Web Sitesi Sayısı 7 Milyon

Her gün kurulan uygulama sayısı 20 MilyonWikipedia

Wikipedia tarafından sunulan toplam makale sayısı

17 Milyon

Flickr Her dakika yüklenen ortlama resim sayısı 3000

YoutubeAylık olarak toplam gösterim sayısı 92 Milyar

Dakika başına yüklenen toplam video süresi 65 Saat

TwitterGünlük ortalama tweet sayısı

190 Milyon

Günlük Twitter Arama Motoru sorgu sayısı 2.1 MilyarKaynak : Statistic Brain

12.26.2013

Page 15: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

SorunlarVeri hacminin artan ivmeyle büyümesiVeri çeşitliliğinin artması (Semi-Structured/Unstructured)Artan işlem trafiğiYüksek transaction değerleriÖlçekleme maliyetleriDiğer teknolojik yeniliklerin getirdiği baskı

Page 16: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Ölçekleme Demişken!Scale out Scale up

Page 17: NoSQL - Yazılımcı Bakışıyla

NoSQL

#NoSQL, #NotOnlySQL

Mahallenin Yeni Delikanlısı

Page 18: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

NoSQL

Page 19: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

NoSQL Tanımı

RDBMS modelini izlemeyen veri depolama biçiminin genel adı.İlişkisel olmayan verileri hedefleyen, SQL dilini kullanmayan.Atomicity ve Consistency yerine Scalability ve Availability sorunlarını çözmeye odaklı.Veri çeşitliliğine önem veren.

Page 20: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Artıları Eksileri

ACID tipindeki transactionlar’ın Document tipi haricinde uygulama seviyesinde yapılması zorundadır.Document-Store’ lar da detay seviyede güvenlik yoktur.NoSQL yeni bir kavramdır ve kullanacakların eğitilmesi gerekir.Document Store’ lar var olan raporlama ve OLAP araçları ile çalışmazlar.

+-

BASE adı verilen transaction prensibini kullanır.O/RM’ e ihtiyaç duymaz.Scale edilmesi kolay ve efektifdir. Scale-out için sıradan sunucular kullanılabildiğinden ölçekleme maliyetleri düşüktür.Yüksek çeşitlilikteki verileri saklamak kolaydır.Yüksek hızlı dahili arama fonksiyonellikleri.

Page 21: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Çeşitleri

Column FamilyKey – ValueDocument StoreGraphXML Databases…

Page 22: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Column Family

Bir satır binlerce kolon içerebilirDaha karmaşık bir veri modelidirZengin Structure’ a sahiptirBir araya getirme odaklıdırKolonlara/kolon ailelerine erişim kolay ve süratlidir

Page 23: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Column Family

Row IDColumn Family

Column Name

Timestamp

Value

Row Key

Timestamp

Name Family Connection Family

First LastPhone Number Email

Row 1

T1 [email protected]

T4Şenyurt

T9Burak 444-55-66 [email protected]

Row 2

T20 Jon Do122-54-64-555 [email protected]

T22 Doe

T45 [email protected]

Page 24: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Column Family

Sepetim

Sepet ID

Kullanıcı

Oluşturulma

9005 Burki 4.12.2013

9006 ConDo 5.12.2013

Sepet Öğeleri

Öğe ID

SepetID

Miktar

Ürün No

1001 9005 3 PRD-01

1002 9005 1 PRD-02

Ürün

Ürün No

Adı Fiyat

Kategori

PRD-01 AyFone5

120 Telefon

PRD-02 Anduroit

190 Telefon

Page 25: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Column Family

Row ID

Timestamp

Kullanıcı

SepetID

Urun Adı

Urun No

BirimFiyat

Adet

Kategori

1506

T1 Burki 9005

T2 AyFone5

PRD-01

120 3 Telefon

T3 Anduroit

PRD-02

190 1 Telefon

Page 26: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Key-Value

Basit hash map mantığıŞema yokHızlı aramalarKolay dağıtımAmazon DynamoDB kökenliEn basit NoSQL modelidirZengin veri çeşitliliği

Keys

105456

121105

895432

Page 27: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Document StoreJSON tipinde veri tutmaDoküman yapısı içerisinde sorgu yapabilmeDokümanın belirli bir parçasını tedarik edebilme, güncelleyebilmeDokümanlar arası bağlantı kurabilmeImplicit SchemaStandart bir sorgulama dili yok

{ "customerInfo" : {

"customers" : [{

"firstName" : "Burak Selim",

"lastName" : "Şenyurt","age" : 37,"city" : "İstanbul",

},

{"firstName" : "Con","lastName" : "Doe","age" : 51,"city" : "London",

},…

]}

}

Page 28: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Graph

Graph algoritmalı karmaşık veri yapıları için tam uygunlukHızlı sorgulamaSosyal ağlarda, iletişim ve email verileri gibi alanlarda etkiliCluster edilmesi zor

Node

Node

Relationship

Properties Properties Properties

Page 29: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Graph

PitzaHat

DoMiiiNoz

Arkadaşı

Arkadaşı

Ark

ad

aşı

Favorisi

Favorisi

TatuyinLoka

syon

Loka

syo

n

Page 30: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Graph

Kaynak : Making Sense of NoSQL

Page 31: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Gerçek Hayat KullanımlarıÜrün Üretici Tip CAPInternal

? Bazı Kullanıcıları

Dynamo Amazon Key Value AP Evet Amazon

Cassandra Facebook Column Store AP Hayır Facebook, Digg, Twitter, Rackspace, Cisco,

BigTable Google Column Store CP Evet Google

MongoDB 10Gen Document Store CP Hayır EA, Newyork Times, Github, Sourceforge

CouchDB Couchio Document Store AP Hayır BBC, Sauce Labs

SimpleDB Amazon Key Value AP Hayır Alexa

Neo4J Neo Technologies Graph ?? Hayır Adobe, Swedish Defence Forces,

Redis VMware Key Value CP Hayır Twitter, The Guardian, Instagram, Stackoverflow

Voldemort Linkedin Key Value AP Hayır Linkedin

Memcached LiveJournal Key Value (In-Memory) CP Evet LiveJournal, Flickr, Wikipedia, Youtube, Digg

Page 32: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Berkley bilgisayar bilim insanlarından Eric Brewer 2000 yılındaki Symposium on Principles of Distributed Computing’ de bir teori sunar. Teori, 2002 de MIT’ den Seth Gilbert ile Nancy Lynch tarafından resmi olarak ispatlanır.

Teoriye göre dağıtık bir sistem, güvenilir olmayan bir ağ üzerinde aşağıdaki 3 özelliğin hepsini birden sağlayamaz/garanti edemez.

Consistency : Tüm node’ lar t zamanında aynı veriyi görmelidir.Availability : Node’ larda oluşacak hatalar diğerlerini etkilememelidir. (Her operasyon talebi hatalı da olsa planlanmış bir cevap almalıdır)Partition Tolerance : Sistem mesaj kaybı olsa bile çalışmaya devam edebilmelidir. (Operasyonlar bileşenlerden herhangibiri kullanılmaz durumda bile olsa tamamlanır)

Peki Ne Zaman? (CAP)

Page 33: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Peki Ne Zaman? (CAP)ConsistencyAvailability

Parition Tolerance

C

A

PRDBMS Column Oriented

Key-ValueColumn OrientedDocument Oriented

Key-ValueColumn OrientedDocument OrientedMongoDb, BigTable, Hypertable, MemCached,

Redis

CassandraCouchDbDynamoSimpleDbRiak

RDBMSMySQLVertica

Page 34: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Peki Ne Zaman?

Veri Boyutu

Veri Karmaşıklığı

RDMBS

Key-Value

Document Based

Column Family

Graph

Page 35: NoSQL - Yazılımcı Bakışıyla

Kapışma

RDBMS vs NoSQL

Page 36: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

RDBMS vs NoSQL

UI

ObjectRelational

RelationalObject

Blobs

Transactions

Caching

Search

Batch

Triggers

MiddleTier

Database

Tier

UI

Transactions

Caching

Search

Batch

Documents

Map Reduce

Key - Value

Servisler

Page 37: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

RDBMS vs NoSQL

ACID BASE

Çalışırken rapor almayı engelle, çünkü raporlar tutarlı olmalı ve doğru veriyi yansıtmalıdır.Kötümser ol : Bir şeyler ters gidebilir.Tonlarca Lock ve Unlock kullanTransaction detaylarının doğruluğundan emin ol.

Bir yazma işlemini asla kesme.Consistency’ ye değil işlem hacmine odaklan (Big Data)İyimser ol : Bir servis düşse bile doğal olarak ayağa kalkacaktır.Bazı raporlar bir süre için tutarsızlık gösterebilir ama üzülme. Sonunda doğru bilgiyi verir.Lock’ lar dan uzak dur, basit düşün.

Page 38: NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt www.buraksenyurt.com

Kaynaklar