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ı