nosql sunumu

Post on 20-Jan-2015

3.149 Views

Category:

Education

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

Author: Sarper Aydogan

TRANSCRIPT

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ı

top related