NoSQL - Yazılımcı Bakışıyla

Burak Selim Şenyurt
Burak Selim ŞenyurtDoğuş Teknoloji / Senior Software Developer at Doğuş Teknoloji
NoSQL - Yazılımcı Bakışıyla
Başlangıç

Veri(Data)
Popüler Veri Depolama Modeli – RDBMS

Sıkıntılar

Mahallenin Yeni Delikanlısı - NoSQL

RDBMS vs NoSQL
Kaynaklar
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
no:sql(east)
2009 - Atlanta
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
ACID
SQL

Yetki bazlı veri
verinin

denetlenmesi

Object-Relational Mapping(O/RM)
Join
zor
Sharding

zordur

çeşitlilik gösteren verilerin

Scale-Out

saklanması
OrderDetails
Orders
CategoryID

Title

Description

ID

ProductId

CustomerID

Number

Name

Title

Quantity

LastName

CustomerID

AddressID

CategoryID

BirthDate

AddressID

Line1

Line2

City

Street

PostalCode
Atomic :
Consistent :

Ya hep ya hiç
Veritabanı bütünlüğü

Isolated :
Durable :

söyledim
* Aksi durumlar söz konusu olabilir. Bunun için izolasyon seviyeleri ele alınır.

İşime karışma *
Son sözümü
NoSQL - Yazılımcı Bakışıyla
Firma

İstatistik

Aylık paylaşım sayısı
Facebook

Entegre çalışan Uygulama ve Web Sitesi Sayısı
Her gün kurulan uygulama sayısı

Wikipedia Wikipedia tarafından sunulan toplam makale sayısı
Her dakika yüklenen ortlama resim sayısı
Flickr
Youtube
Twitter
12.26.2013

Aylık olarak toplam gösterim sayısı
Dakika başına yüklenen toplam video süresi
Günlük ortalama tweet sayısı
Günlük Twitter Arama Motoru sorgu sayısı

Değer
70 Milyar
7 Milyon
20 Milyon
17 Milyon
3000
92 Milyar
65 Saat
190 Milyon
2.1 Milyar
Statistic Brain
Veri hacmi
Veri çeşitliliği
işlem trafiği
Yüksek transaction
Ölçekleme
teknolojik
baskı
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
RDBMS modelini izlemeyen
İlişkisel olmayan
Atomicity
Consistency
Veri çeşitliliği

SQL
Scalability

kullanmayan
Availability
BASE
O/RM
Scale
Scale-out

kolay
sıradan sunucular

Yüksek çeşitlilikte veri
hızlı
arama
NoSQL - Yazılımcı Bakışıyla
binlerce kolon
karmaşık
veri modeli
Zengin Structure
Bir araya getirme
süratli
Row ID

Column
Family

Row Key Timestamp

Column
Name

Name Family
First

Last

T4

T20

Jon

T45

Phone Number

Email
selim@buraksenyurt.com

444-55-66

Burak

T22

Connection Family

burak@blaba.com

122-54-64-555

jon@doe.doe.com

Şenyurt

T9

Row 2

Value

333-33-33

T1
Row 1

Timestamp

Do
Doe

Jon.doe@nosql.com.fr
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
Row ID Time Kullanıcı SepetID Urun
stamp
Adı

T1
1506

Burki

Urun
No

Birim Adet Kategori
Fiyat

9005

T2

AyFone5 PRD-01 120

3

Telefon

T3

Anduroit PRD-02 190

1

Telefon
Keys

hash map
Şema yok
Hızlı
Kolay dağıtım
DynamoDB
basit
veri çeşitliliği

105456
121105
895432
JSON
Doküman

içerisinde sorgu
belirli bir parçasını

tedarik
Dokümanlar arası bağlantı
Implicit Schema
Standart bir sorgulama dili yok

{ "customerInfo" :
{
"customers" : [
{
"firstName" : "Burak Selim",
"lastName" : "Şenyurt",
"age" : 37,
"city" : "İstanbul",
},
{

},
…
}

}

"firstName" : "Con",
"lastName" : "Doe",
"age" : 51,
"city" : "London",
]
Graph algoritmalı
Hızlı sorgulama
Sosyal ağlar
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
Ürün

Üretici

Tip

CAP Internal? 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

Evet

LiveJournal, Flickr, Wikipedia, Youtube, Digg

Memcached LiveJournal

Key Value (In-Memory) CP
Eric Brewer
Symposium on Principles of Distributed Computing
Seth Gilbert
Nancy Lynch
güvenilir olmayan bir ağ üzerinde
aşağıdaki 3 özelliğin hepsini birden
Consistency :
Availability :
Partition Tolerance :
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
NoSQL - Yazılımcı Bakışıyla
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.
NoSQL - Yazılımcı Bakışıyla
1 of 38

Recommended

NoSQL Sunumu by
NoSQL SunumuNoSQL Sunumu
NoSQL SunumuAhmet Balkan
2K views17 slides
Mongo sunum by
Mongo sunumMongo sunum
Mongo sunumTarik Yilmaz
1.6K views23 slides
Nosql ve mongoDB by
Nosql ve mongoDBNosql ve mongoDB
Nosql ve mongoDBSaygın Topatan
2K views43 slides
No SQL & MongoDB Nedir? by
No SQL & MongoDB Nedir?No SQL & MongoDB Nedir?
No SQL & MongoDB Nedir?Sistek Yazılım
129 views20 slides
DP:900 Azure Data Fundamentals - Temel veri kavramları-01 by
DP:900 Azure Data Fundamentals - Temel veri kavramları-01DP:900 Azure Data Fundamentals - Temel veri kavramları-01
DP:900 Azure Data Fundamentals - Temel veri kavramları-01Önder Değer
290 views33 slides
Nosql & MongoDB by
Nosql & MongoDBNosql & MongoDB
Nosql & MongoDBSerdar Buyuktemiz
728 views32 slides

More Related Content

Viewers also liked

Gizli Tehlike : AntiPatterns by
Gizli Tehlike : AntiPatternsGizli Tehlike : AntiPatterns
Gizli Tehlike : AntiPatternsBurak Selim Şenyurt
8.5K views28 slides
İlişkisel Veritabanı Sistemleri ve NoSQL by
İlişkisel Veritabanı Sistemleri ve NoSQLİlişkisel Veritabanı Sistemleri ve NoSQL
İlişkisel Veritabanı Sistemleri ve NoSQLMurat Azimli
8.5K views15 slides
SOA Gerçekleri by
SOA GerçekleriSOA Gerçekleri
SOA GerçekleriBurak Selim Şenyurt
52.6K views20 slides
Finans Sektöründe Verimli Yazılımcı Olabilmek by
Finans Sektöründe Verimli Yazılımcı OlabilmekFinans Sektöründe Verimli Yazılımcı Olabilmek
Finans Sektöründe Verimli Yazılımcı OlabilmekBurak Selim Şenyurt
3.9K views25 slides
Nosql intro by
Nosql introNosql intro
Nosql introHoang Nguyen
2.2K views11 slides
Tfs ile duzenli proje gelistirme by
Tfs ile duzenli proje gelistirmeTfs ile duzenli proje gelistirme
Tfs ile duzenli proje gelistirmeBurak Selim Şenyurt
760 views27 slides

Similar to NoSQL - Yazılımcı Bakışıyla

Kurumsal Yazılım Geliştirme ve Visual Studio 2008 by
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008mtcakmak
1.3K views83 slides
Atif Unaldi - Commerce (Bilisim) by
Atif Unaldi - Commerce (Bilisim)Atif Unaldi - Commerce (Bilisim)
Atif Unaldi - Commerce (Bilisim)Atıf ÜNALDI
613 views52 slides
Internet Tabanli Yildiz Teknik Universitesi Bilgi Sistemi by
Internet Tabanli Yildiz Teknik Universitesi Bilgi SistemiInternet Tabanli Yildiz Teknik Universitesi Bilgi Sistemi
Internet Tabanli Yildiz Teknik Universitesi Bilgi Sistemicemera
1.9K views45 slides
Introduction to Amazon Web Services by
Introduction to Amazon Web ServicesIntroduction to Amazon Web Services
Introduction to Amazon Web ServicesAnkaraCloud
867 views83 slides
Microsoft SQL 2014 by
Microsoft SQL 2014Microsoft SQL 2014
Microsoft SQL 2014Mustafa Kuğu
570 views25 slides
Serverless ile istegelsin by
Serverless ile istegelsin Serverless ile istegelsin
Serverless ile istegelsin Ceri Tandogan
673 views30 slides

Similar to NoSQL - Yazılımcı Bakışıyla(20)

Kurumsal Yazılım Geliştirme ve Visual Studio 2008 by mtcakmak
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
mtcakmak1.3K views
Atif Unaldi - Commerce (Bilisim) by Atıf ÜNALDI
Atif Unaldi - Commerce (Bilisim)Atif Unaldi - Commerce (Bilisim)
Atif Unaldi - Commerce (Bilisim)
Atıf ÜNALDI613 views
Internet Tabanli Yildiz Teknik Universitesi Bilgi Sistemi by cemera
Internet Tabanli Yildiz Teknik Universitesi Bilgi SistemiInternet Tabanli Yildiz Teknik Universitesi Bilgi Sistemi
Internet Tabanli Yildiz Teknik Universitesi Bilgi Sistemi
cemera1.9K views
Introduction to Amazon Web Services by AnkaraCloud
Introduction to Amazon Web ServicesIntroduction to Amazon Web Services
Introduction to Amazon Web Services
AnkaraCloud867 views
Serverless ile istegelsin by Ceri Tandogan
Serverless ile istegelsin Serverless ile istegelsin
Serverless ile istegelsin
Ceri Tandogan673 views
(Turkish) SAP Forum 2017: ING Bank Başarı Hikayesi Sunumu - Kurumsal Bilgi Yö... by MDS ap
(Turkish) SAP Forum 2017: ING Bank Başarı Hikayesi Sunumu - Kurumsal Bilgi Yö...(Turkish) SAP Forum 2017: ING Bank Başarı Hikayesi Sunumu - Kurumsal Bilgi Yö...
(Turkish) SAP Forum 2017: ING Bank Başarı Hikayesi Sunumu - Kurumsal Bilgi Yö...
MDS ap224 views
Gartner Tr2009 Istanbul May27 Qvbi Tech Summary by MUZAFFER YONTEM
Gartner Tr2009 Istanbul May27 Qvbi Tech SummaryGartner Tr2009 Istanbul May27 Qvbi Tech Summary
Gartner Tr2009 Istanbul May27 Qvbi Tech Summary
MUZAFFER YONTEM305 views
Silverlight ve Sharepoint 2010 by Evren Ayan
Silverlight ve Sharepoint 2010Silverlight ve Sharepoint 2010
Silverlight ve Sharepoint 2010
Evren Ayan452 views
istegelsin & retter mobile aws serverless presentation by Emre Öget
istegelsin & retter mobile aws serverless presentationistegelsin & retter mobile aws serverless presentation
istegelsin & retter mobile aws serverless presentation
Emre Öget418 views
Blockchain ile Yeni Internet by Emre Tekisalp
Blockchain ile Yeni InternetBlockchain ile Yeni Internet
Blockchain ile Yeni Internet
Emre Tekisalp398 views
Eticaret akademi Yazılım ve IT süreçleri by Murat Kader
Eticaret akademi Yazılım ve IT süreçleriEticaret akademi Yazılım ve IT süreçleri
Eticaret akademi Yazılım ve IT süreçleri
Murat Kader539 views
Istanbul Datascience Academy Talks by Metin Uslu
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy Talks
Metin Uslu102 views
Azure Sanal Makineler by Mustafa
Azure Sanal MakinelerAzure Sanal Makineler
Azure Sanal Makineler
Mustafa 518 views
Bulutistan 2017 - Türkiyenin Bulut Entegratörü by Bulutistan
Bulutistan 2017 - Türkiyenin Bulut EntegratörüBulutistan 2017 - Türkiyenin Bulut Entegratörü
Bulutistan 2017 - Türkiyenin Bulut Entegratörü
Bulutistan390 views

More from Burak Selim Şenyurt

Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori) by
Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori)Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori)
Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori)Burak Selim Şenyurt
199 views23 slides
Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern Macerası by
Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern MacerasıBeş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern Macerası
Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern MacerasıBurak Selim Şenyurt
82 views36 slides
Monolitik Yapılarda Teknik Borçlardan Kurtulmak by
Monolitik Yapılarda Teknik Borçlardan KurtulmakMonolitik Yapılarda Teknik Borçlardan Kurtulmak
Monolitik Yapılarda Teknik Borçlardan KurtulmakBurak Selim Şenyurt
45 views32 slides
Bugün Yarınların için Ne Yapacaksın? by
Bugün Yarınların için Ne Yapacaksın?Bugün Yarınların için Ne Yapacaksın?
Bugün Yarınların için Ne Yapacaksın?Burak Selim Şenyurt
339 views28 slides
Kaosu Körüklemek by
Kaosu KörüklemekKaosu Körüklemek
Kaosu KörüklemekBurak Selim Şenyurt
82 views19 slides
Yazılımda Sağlam Adımlar Atmak by
Yazılımda Sağlam Adımlar AtmakYazılımda Sağlam Adımlar Atmak
Yazılımda Sağlam Adımlar AtmakBurak Selim Şenyurt
682 views19 slides

More from Burak Selim Şenyurt(16)

Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori) by Burak Selim Şenyurt
Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori)Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori)
Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori)
Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern Macerası by Burak Selim Şenyurt
Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern MacerasıBeş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern Macerası
Beş Dakikalik Yolu Bir Saatte Gitmek - Bir AntiPattern Macerası

NoSQL - Yazılımcı Bakışıyla

Editor's Notes

  1. NoSQL kavramı ilk olarak 1998 de Carlo Strozzitarafından dile getirilmiştir. 2009’da Eric Evan tarafından yeniden tanıtılmıştır.
  2. Live Journal, veritabanı sorgularının performansını arttırmak, (MemCached) - Youtube, Reddit, Facebook, Twitter, Tumblr, WikipediaGoogle, milyarlarca sayfa üzerinden yapılan arama sonuçlarını indekslerken düşük maliyetli sunucuları kullanabilmek, (MapReduce)Google, çok sayıda kolonla ifade edilebilecek veri tablolarını dağıtık mimaride olabildiğince esnek bir şekilde tutabilmek, (BigTable)Amazon, 7/24 bir web siparişini kabul edebilmek, (Dynamo)MarkLogic, standart sorgulama dilini kullanarak sıradan donanımlı sunucularda sakladığı devasa boyuttaki XML doküman koleksiyonları üzerinde sorgulama yapabilmek, (Müşterileri arasında Warner Bros, Citigroup, Dow Jones, Boeing) için kendi geliştirdikleri NoSQL sistemlerini tercih etmişlerdir.
  3. 1998 yılında tasarımcı Carlo Strozzi Unix sistemlerde çalışan shell tabanlı, SQL dilini kullanmayan bir veritabanı tasarlar. Kendisi RDBMS’ ler gibi ilişkisel olmayan bu veritabanı için NoREL ifadesinin kullanılmasını daha uygun bulur. Derken 2009 yılnda Atlanta’ da yapılan bir konferans’ da Eric Evans tarafından kavram tekrardan gündeme getirilir ve tanımlanır.Strozzi’ nin tasarladığı NoSQL sistemi ile ilişkili olarak http://www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/nosql/Home%20Page adresinde detaylı bilgi bulunmaktadır.
  4. Katılımcılarla karşılıkı etkileşim sağlanarak ilerlenir.Cem Yılmaz – 1- Dayak nedir? 2- Neden Atılır?
  5. Scalability(Ölçeklenebilirlik)Horizontal Scalability:Sistemin kapanmadan paralelinde yeni makineler eklenerek genişlemesi ve hacimsel olarak büyümesi.Vertical scalability:Tek makineye ek donanım takviyeleri yapılarak genişletilmesi.
  6. CAP Teoremi Cluster üzerindeki Partition’ lar arasında iletişim kopmaları yaşanabilen vakalarda uygulanmaktadır!!!Consistency : ACID’ deki Consistency değildir. Burada tüm istemciler için tek, güncel ve okunabilir bir data söz konusudur. N sayıda istemci replicate edilmiş partition’ lardan aynı öğeleri okur ve tutarlı sonuçlar elde eder.High Availability : Dağıtık bir veritabanı sistemi istemcilerinin veriyi update ederken gecikme yaşamasına müsaade etmez. Replicate edilmiş partition’ lar arasında oluşabilecek iletişim aksaklıkları güncellemeleri kesmemelidir.PartitionTolerence : Database partition’ ları arasında iletişim aksasa bile sistem istemcilerine cevap vermeye devam eder. Bu ilke NoSQL sistemlerinin makine kapatmadan yatayda kolayca genişleyebilmesine olanak tanımaktadır.
  7. http://en.wikipedia.org/wiki/CAP_theorem
  8. Basic Availability: Her request başarısız icra edilse de bir Response almalıdır. Garanti Response.Soft State: Sistemin durumu zaman içerisinde hiçbir veri girişi olmadığı halde değişiklik gösterebilir(Eventual Consistency’ ye ithafen)Eventual Consistency: Veri tabanı geçici olarak tutarsız bir konuma gelebilir ama nihayetinde tutarlılık kazanacaktır.
  9. Sosyal bir ağımız var ve bir arkadaşımızın profiline girdiğimizde bize "4 ORTAK ARKADAŞINIZ VAR" diyor. 4 ortak arkadaşımız olduğunu Map/Reduce ile nasıl bulabileceğimize bakalım.Map / Reduce algoritmasında iki temel fonksiyon vardır map(k1,v1) -> list(k2,v2) ve reduce(k2, list (v2)) -> list(v3)Aysun -> Behçet,Cevdet,DemetBehçet -> Aysun, Cevdet, Demet, EmreCevdet -> Aysun, Behçet, Demet, EmreDemet -> Aysun, Behçet, Cevdet, EmreEmre -> Behçet, Cevdet, Demetşimdi map(k1,v1) -> list(k2,v2) zamanımap(Aysun -> Behçet, Cevdet, Demet)(Aysun Behçet) -> (Behçet Cevdet Demet)(Aysun Cevdet) -> (Behçet Cevdet Demet)(Aysun Demet) -> (Behçet Cevdet Demet)map(Behçet -> Aysun,Cevdet,Demet,Emre)(Aysun Behçet) -> (Aysun Cevdet Demet Emre)(Behçet Cevdet) -> (Aysun Cevdet Demet Emre)(Behçet Demet) -> (Aysun Cevdet Demet Emre)(Behçet Emre) -> (Aysun Cevdet Demet Emre)map(Cevdet->Aysun,Behçet,Demet,Emre)(Aysun Cevdet) -> (Aysun Behçet Demet Emre)(Behçet Cevdet) -> (Aysun Behçet Demet Emre)(Cevdet Demet) -> (Aysun Behçet Demet Emre)(Cevdet Emre) -> (Aysun Behçet Demet Emre)map(Demet -> Aysun,Behçet,Cevdet,Emre)(Aysun Demet) -> (Aysun Behçet Cevdet Emre)(Behçet Demet) -> (Aysun Behçet Cevdet Emre)(Cevdet Demet) -> (Aysun Behçet Cevdet Emre)(Demet Emre) -> (Aysun Behçet Cevdet Emre)map(Emre->Behçet,Cevdet,Demet)(Behçet Emre) -> (Behçet Cevdet Demet)(Cevdet Emre) -> (Behçet Cevdet Demet)(Demet Emre) -> (Behçet Cevdet Demet)Şimdi bunları gruplayalım(Aysun Behçet) -> (Aysun Cevdet Demet Emre) (Behçet Cevdet Demet)(Aysun Cevdet) -> (Aysun Behçet Demet Emre) (Behçet Cevdet Demet)(Aysun Demet) -> (Aysun Behçet Cevdet Emre) (Behçet Cevdet Demet)(Behçet Cevdet) -> (Aysun Behçet Demet Emre) (Aysun Cevdet Demet Emre)(Behçet Demet) -> (Aysun Behçet Cevdet Emre) (Aysun Cevdet Demet Emre)(Behçet Emre) -> (Aysun Cevdet Demet Emre) (Behçet Cevdet Demet)(Cevdet Demet) -> (Aysun Behçet Cevdet Emre) (Aysun Behçet Demet Emre)(Cevdet Emre) -> (Aysun Behçet Demet Emre) (Behçet Cevdet Demet)(Demet Emre) -> (Aysun Behçet Cevdet Emre) (Behçet Cevdet Demet)Reduce(k2, list (v2)) -> list(v3)reduce((Aysun Behçet) -> (Aysun Cevdet Demet Emre) (Behçet Cevdet Demet)) (Aysun Behçet) -> (Cevdet Demet)(Aysun Cevdet) -> (Behçet Demet)(Aysun Demet) -> (Behçet Cevdet)(Behçet Cevdet) -> (Aysun Demet Emre)(Behçet Demet) -> (Aysun Cevdet Emre)(Behçet Emre) -> (Cevdet Demet)(Cevdet Demet) -> (Aysun Behçet Emre)(Cevdet Emre) -> (Behçet Demet)(Demet Emre) -> (Behçet Cevdet)Buna göre Behçet, Emre' nin profiline girdiğinde (Behçet Emre) key' inin karşısındaki (Cevdet Demet) e bakara iki ortak arkadaşları olduğunu ve hatta bunların kim olduklarını gösterebiliriz.
  10. Single multi-processor computer
  11. Veri büyürken ihtiyaçları karşılayacak şekilde ölçeği arttırmak beraberinde bazı soruları da getirir. Veriyi nereye nasıl saklayacağız, nasıl eşleştireceğiz ya da eşleştirmeyecek miyiz, veriyi bölecek miyiz, neye göre böleceğiz veya böldüysek taşırken sunucu kapatacak mıyız?Bir örnek ile devam edelim.Kullanıcılarının kendi kişisel alanlarını yarattıkları bir web sitemiz olduğunu düşünelim. Söz gelimi kendilerine özgün bir Second Life kurdukları bir sosyal ağ olsun. Beğendikleri ürünleri koyabilsinler, profilleri bulunsun, bol bol text ekleyebilsinler. Site verilerini bir RDBMS üzerinde tuttuğumuzu varsayalım. MySQL olabilir. Tek bir CPU su olan bir DB server da çalıştığımızı düşünelim. Site tuttu. İnsanlar arkadaşlarını davet etmeye başladılar ve olan oldu. Disk kapasitesi dolmaya başladı. Sadece %10 luk bir alanı boş. Şimdi ne yapacağız?Büyük ihtimalle yeni bir sistem satın alıp verinin bir kısmını onun üstüne aktaracağız. Bu kısaca Sharding dediğimiz mekanizma aslında. Bu arada hangi sunucudan bilgi okunacağına dair uygulama seviyesinde geliştirme yapmalıyız. Bunu yaparken ne yazık ki eksi sunucu ve db bir süreliğine kapalı kalacak. Veriyi tekil db’den çoklu ve dağıtık yapıdaki db’ sistemine dağıtırken başka sorular da karşımıza çıkacak. Örneğin;Hangi makine de hangi veri aralıklarını tutacağız? Buna nasıl karar vereceğiz? Peki ya bir partition da duran veri de değişiklik olur ve onun karar verdiğimiz ayırma prensibine göre diğer bir partition’ a taşınması gerekirse? Söz gelimi isminin baş harfi A ile K aralığındakileri X sunucusundaki DB’ de diğerlerini de Y sunucusundaki DB’ de tuttuğumuz var sayalım. Adam ismini değiştirip diğer aralığa girerse tüm verisini o DB’ ye taşımalı mıyız? Şimdilik sadece iki sunucuya bölündük. Ya veri iki kat büyürse. Tekrar sunucuları kapatıp, uygulamalarda değişiklik yapıp yeni makineleri sisteme bu şekilde mi dahil edeceğiz?
  12. Veri parçalanarak dağıtılır. Replication’ da olduğu gibi tüm alt db’ ler de verinin aynısı bulunmaz.
  13. Daha çok High Availability adına uygundur. Uygulamalar sadece Master DB’ ye veri yazar ve oradan okurlar. Master DB lerden birinin çökmesi halinde Slave DB hemen sorumluluğu üstlenir ve cevap verir. Bu High Availability anlamına gelir. Tabi yine de bir soru vardır. Ya Slave sistemlerden biri çökerse  Bu tip durumlarda Reliable Messaging veya Message Store gibi Queue tabanlı sistemler kullanılarak çökmelerin önüne geçilir. Master DB’ ye bir şeyler yazıldığında hemen Slave’ lere de kopyalama olur. Bu nedenle kopylama işlemleri sırasında sistemde bir yavaşlık olabilir ve okuma hızları düşebilir.ACID ilkelelerinin garanti edilmesi istendiği durumlarda transaction’ ların aksamaması, garanti edilmesi ve yedeklerin tutarlı ve birebir alınması noktasında Replication bir çözümdür. Bu noktada Sharding in High Availability sunmadığını söyleyebiliriz.