nosql sunumu
DESCRIPTION
Author: Sarper AydoganTRANSCRIPT
Sarper Aydoğan – Turkcell Teknoloji Staj’2010
No to SQL
Not Only SQL
Var olma Sebebi?1.Sürekli artan veriyi ölçeklendirme -> 2.Artan karmaşık çoğa – çok (many to many) ilişkiler3.Çok öğeli sabit ilişkisel şemalar yerine önceden belirlenmemiş ve genişletilebilir veriler veri şeması kullanıyor olması 4.Veri karmaşık “Joinler” kullanılmadan sadece primary key’e dayalı olarak tekrar tekrar çağırılıyorsa.
RDMS Performans
Perf
orm
an
s
Data Karmaşıklığı
Maaş Listesi
Sosyal Networkler
Web Uygulamaları
ilişkisel
Yatay ve Dikey ölçeklendirmeye izin veren(Yeni modüllerin ve datanın rahatça eklenebilmesi)
Dağınık
JOIN
ACIDAtomicity,
Consistency, Isolation, Durability
Büyük datalar?
Ölçeklendirme & Kaynaklar?
CAP
ConsistencyAvailability
Partition Tolerance
Key Value StoresBüyük data bloklarını tutmak ve
ölçeklendirmek için kullanılır.
A
C
D
B
•Her unique anahtar değeri bir değeri referans eder. (HashMap)
•Database’in Değerden haberi yok
•Memcached’den farklı olarak replication, versioning, locking ve sorting gibi özellikler sunar.
VoldemortOpen Source (Linkedin Katkılarıyla)Veri otomatik, parçalar haline getirilip,
parçalar birden çok servera dağıtılıyor.Concurreny problemleri “multi-version
concurrency control” (MVCC) ile çözülüyor.Gelişmiş Failure Handling
Document Database Her veriyi bir doküman olarak saklar. Key Value Store’la benzerlik gösterir.
Farklı olarak
Key- Value Store’dan daha karmaşık yapıda veri saklar (Arrayler, objeler..) Multiple index’lemeyi destekler
RDBMS’den farklı olarak veri tabanı ve tablolar yok CouchDB, MongoDB
{“_id” : “1″,“name” : “A”,“groupid” : “1″,}{“_id” : “2″,“name” : “B”,“groupid” : “1″,}
Key –Value Store, Document DB ve RDBMS özelliklerini taşır
Dinamik Query’lerIndexing
•Hızlı okuma/yazma için dizayn edilmiştir.
•Tanıdık veri Tipleri Kullanır -> Array, Binary, Boolean, DateTime, Null, String, Embedded Object
Temel veri birimi -> Document
•Veriye ulaşma ve değiştirme yolları
indexler
Dinamik Query’ler
MapReduce
CouchDB & MongoDBDatabase ->
DocumentsConcurrency -> MVCCData Types ->
string,number,boolean,array,object
Query Method -> Map/reduce
Database -> Collections(Tables) -> Documents
Concurreny -> Yerinde Güncelleme
Data Types -> string, int, double, boolean, date, bytearray, object, array, others
Query Method -> Dynamic; object-based query language
Wide Column StoresGoogle BigTable CloneSatır ve sütunlara dayanan ölçeklendirmeHer key birden çok sütunla ilişkilenirDağınık ve birden çok boyutludurYarı ilişkisel yapıya sahiptirÖlçeklendirme, satırları ve sütunları
parçalayarak meydana gelir Satırlar, primary key’e bağlı olarak bölünür. Sütunlar, sütun gruplarına bağlı olarak bölünür.
HBaseHadoop Database – büyük datasetlerine hızlı
read/writeHDFS (Hadoop Distributes File System) üzerinde
çalışırConcurrency - LocksBTree- Sıralama HızlıHadoop MapReduce’lariyla başa çıkabilecek Hbase
tabloları*Veri sıralanmış biçimde saklanırReal Time Query’ler için OptimizationTwitter, Yahoo!**
*MapReduce- Büyük datasetlerin çözülmesi**http://wiki.apache.org/hadoop/Hbase/PoweredBy
Map and Reduce
Hbase & CassandraJava tabanlıConcurrency - LocksBTree- Sıralama
HızlıHadoop
Dosyalamasını Kullanır
Java tabanlıConcurrency - MVCCOrdered Hash Index-
Btree’den daha yavaşOtomatik failure
detection ve full recovery
Mevcut Klonlar BigTable ‘ın transaction oranına ulaşamamıştır.Google Maps, Earth, Gmail, YouTube
inbox search
Graph DatabaseVeriyi tablolar yerine grafik yapıları (node, edge, property)
üzerinde değerleri saklayan database çeşidi. Key – Value yapısına benzetilebilir.
RDBMS –Static ve basit veriGraph – Dinamik ve karmaşık veri
Neo4j’deki tüm operasyonlar transactionlar üzerinden çalışır ve tüm transactionlar ACID’i destekler.
Node firstNode = graphDb.createNode();Node secondNode = graphDb.createNode();Relationship relationship = firstNode.createRelationshipTo(secondNode, MyRelationshipTypes.KNOWS );
firstNode.setProperty( "message", "Hello, " );secondNode.setProperty( "message", "world!" );relationship.setProperty( "message", "brave Neo4j");
Hello Worldbrave Neo4j
Name Type Concurreny Data Storage
Voldemort Key- Value MVCC RAM
Hbase Wide Column Locks Hadoop
Cassandra Wide Column MVCC Disk
CouchDB Document MVCC Disk
MongoDB Document Field-Level Disk
Neo4j Graph Locks Disk
NoSQL AvantajlarıOLTP Projelerinde hızlı read/write’a olanak
vermesiKolay ölçeklendirebilme ve dağıtım
yapabilmeİlişisel db’lere göre bazı projelerde kolay
implementation sağlaması
NoSQL DezavantajlarıData Integrity -> Uygulama Katmanına
Dayalıİlişkisel DB’ler kadar mature sistemler
değillerStandard bir dilin olmaması