nosql - yazılımcı bakışıyla
TRANSCRIPT
NoSQLYazılımcı Bakışıyla
Burak Selim Şenyurt
Senior Software Consultanthttp://www.buraksenyurt.com
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
Başlangıç
#GoogleMapReduce, #LiveJournalMemCached, #AmazonDynamoDB
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
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
Burak Selim Şenyurt www.buraksenyurt.com
Veri
#data
Burak Selim Şenyurt www.buraksenyurt.com
Veri?
Veri Nedir?Nasıl Saklanır?
RDBMS
#RDBMS, #SQLServer, #Oracle, #MySQL, #DB2…
Popüler Veri Depolama Modeli
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.
+-
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
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.
Sıkıntılar
#HugeData,#BigData, #Scalability, #Variety,
Burak Selim Şenyurt www.buraksenyurt.com
İstatistiki GerçeklerFirma İstatistik Değer
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
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ı
Burak Selim Şenyurt www.buraksenyurt.com
Ölçekleme Demişken!Scale out Scale up
NoSQL
#NoSQL, #NotOnlySQL
Mahallenin Yeni Delikanlısı
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.
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.
Burak Selim Şenyurt www.buraksenyurt.com
Çeşitleri
Column FamilyKey – ValueDocument StoreGraphXML Databases…
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
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
T4Şenyurt
T9Burak 444-55-66 [email protected]
Row 2
T20 Jon Do122-54-64-555 [email protected]
T22 Doe
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
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
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
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",
},…
]}
}
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
Burak Selim Şenyurt www.buraksenyurt.com
Graph
PitzaHat
DoMiiiNoz
Arkadaşı
Arkadaşı
Ark
ad
aşı
Favorisi
Favorisi
TatuyinLoka
syon
Loka
syo
n
Burak Selim Şenyurt www.buraksenyurt.com
Graph
Kaynak : Making Sense of NoSQL
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
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)
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
Burak Selim Şenyurt www.buraksenyurt.com
Peki Ne Zaman?
Veri Boyutu
Veri Karmaşıklığı
RDMBS
Key-Value
Document Based
Column Family
Graph
Kapışma
RDBMS vs NoSQL
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
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.
Burak Selim Şenyurt www.buraksenyurt.com
Kaynaklar