NoSql Nedir Sunum

Download Report

Transcript NoSql Nedir Sunum

Sarper Aydoğan – Turkcell Teknoloji Staj’2010
Var olma Sebebi?
1.Sürekli artan veriyi ölçeklendirme ->
2.Artan karmaşık çoğa – çok (many to many) ilişkiler
3.Ç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.
No to SQL
Performans
RDMS Performans
Maaş
Listesi
Web
Uygulamaları
Data Karmaşıklığı
Sosyal
Networkler
Not Only SQL
Consistency
Availability
Partition
Tolerance
JOIN
Büyük
datalar?
ilişkisel
CAP
Dağınık
ACID
Atomicity,
Consistency,
Isolation,
Durability
Ölçeklendirme
& Kaynaklar?
Yatay ve Dikey
ölçeklendirmeye izin veren
(Yeni modüllerin ve datanın
rahatça eklenebilmesi)
Key Value Stores
 Büyük data bloklarını tutmak ve ölçeklendirmek için
kullanılır.
A
•Her unique anahtar değeri bir değeri referans eder.
(HashMap)
B
C
D
•Database’in Değerden haberi yok
•Memcached’den farklı olarak replication,
versioning, locking ve sorting gibi özellikler sunar.
Voldemort
 Open 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
Indexing
Temel veri birimi -> Document
Dinamik Query’ler
•Hızlı okuma/yazma için dizayn edilmiştir.
•Tanıdık veri Tipleri Kullanır -> Array, Binary, Boolean, DateTime,
Null, String, Embedded Object
indexler
•Veriye ulaşma ve değiştirme yolları
Dinamik Query’ler
MapReduce
CouchDB & MongoDB
 Database -> Documents
 Concurrency -> MVCC
 Data Types ->
string,number,boolean,arr
ay,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 Stores
 Google BigTable Clone
 Satır ve sütunlara dayanan ölçeklendirme
 Her key birden çok sütunla ilişkilenir
 Dağınık ve birden çok boyutludur
 Yarı 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.
HBase





Hadoop Database – büyük datasetlerine hızlı read/write
HDFS (Hadoop Distributes File System) üzerinde çalışır
Concurrency - Locks
BTree- Sıralama Hızlı
Hadoop MapReduce’lariyla başa çıkabilecek Hbase
tabloları*
 Veri sıralanmış biçimde saklanır
 Real Time Query’ler için Optimization
 Twitter, Yahoo!**
*MapReduce- Büyük datasetlerin çözülmesi
**http://wiki.apache.org/hadoop/Hbase/PoweredBy
Map and Reduce
Hbase & Cassandra
 Java tabanlı
 Java tabanlı
 Concurrency - Locks
 Concurrency - MVCC
 BTree- Sıralama Hızlı
 Ordered Hash Index-
 Hadoop Dosyalamasını
Btree’den daha yavaş
 Otomatik failure
detection ve full recovery
Kullanır
inbox
search
Mevcut Klonlar BigTable ‘ın transaction oranına ulaşamamıştır.
Google Maps, Earth, Gmail, YouTube
Graph Database
 Veriyi 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 veri
Graph – 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");
brave Neo4j
Hello
World
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 vermesi
 Kolay ö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ğiller
 Standard bir dilin olmaması