NoSql ve MongoDB. Saygın Topatan



Benzer belgeler
Semantik Ağ ve Üst Veri Sistemleri İçin Yeni Nesil Veri Tabanı Yönetim Modeli: NoSQL. R. Orçun Madran Atılım Üniversitesi.

Mobil Cihazlarda Gömülü Veritabanlarının Karşılaştırılması: SqLite ve CouchBase Lite

PostgreSQL - Yeni dönemdeki yeri

Veritabanı Yönetim Sistemleri (Başarım Eniyileme Performance Tuning)

NoSQL. SQL ve Daha Fazlası (Not Only SQL) Hazırlayan: Ahmet Cevahir ÇINAR

Veritabanı. Ders 2 VERİTABANI

PostgreSQL - Yeni dönemdeki yeri

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

Servis Tabanlı Bir Melez Veri Erişim Mimarisi Önerisi

MongoDB. NoSQL Database

Ölçeklenebilir, Yüksek Erişilebilir ve Performanslı Bir Takip ve İzleme Sistemi Mimarisi: Karşılaştırmalı Bir Çalışma

NoSQL. Buğra Çakır. 23 Mart 13 Cumartesi

1 Temel Kavramlar. Veritabanı 1

MongoDB ve Diğer Veritabanlarında Sharding

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Oracle Database 11g: Introduction to SQL

İlişkisel Veri Tabanları I

Microsoft SQL Server Sorgulama

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veritabanı Sistemleri

SQL Komutları (2) Uzm. Murat YAZICI

Günümüzde Postgres. Modern, Ölçeklenebilir Uygulamalar. Utku Azman Citus Data PGDay citusdata.com

İnternet Programcılığı

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

MongoDB. Doğan Aydın. Eylül, 2011

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Maltepe Üniversitesi Endüstri Mühendisliği Bölümü Veri Tabanı Yönetimi (END 210)

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

Doküman Tabanlı NoSQL Veritabanları: MongoDB ve CouchDB yatay ölçeklenebilirlik karşılaştırması

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

BULUT BİLİŞİM VE BÜYÜK VERİ ARAŞTIRMA LABORATUVARI. Ekim 2017

VERİTABANI Veritabanı Yönetimi

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Üst Düzey Programlama

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

Oracle da kullanılan veri tipleri:

VERİTABANI VERİTABANIN AVANTAJLARI ÖZET

İş Zekası için Dört-Katmanlı Veri Modellemesi Gerçekleştirimi. Harun Gökçe EG Yazılım, TOBB ETÜ

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com

Cloudera Training for Apache HBase

Veritabanı Tasarımı. Tablo Oluşturma

Veritabanı Tasarımı. İlişkisel Veritabanı Kavramlarına Giriş

2 Temel Kavramlar (Devam) Veritabanı 1

Unutulmuş Özellikler: Oracle Veritabanına Yaptığınız Yatırımı Sonuna Kadar Kullanın

Veritabanı Tasarımı. SQL Deyimi Anatomisi

Veri Tabanı Programlamaya Giriş

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

SORGULAR. Öğr.Gör.Volkan Altıntaş

FUTBOL TAKIM ANALİZİ. YZM5510 İş Zekası Ders Projesi. Melih ATASOYLU ( )

Swing ve JDBC ile Database Erişimi

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi --

10-Veri Tabanları.

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

VERİ TABANI UYGULAMALARI

VERİ TABANI YÖNETİM SİSTEMLERİ

Büyük veri ile neler yaptık?

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

MongoDB. Nazım Emre Şavklı

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

PostgreSQL ve PL/pgSQL

SİSTEM İHTİYAÇLARI (Tiger Enterprise / Tiger 3 Enterprise)

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

BIM 312 Database Management Systems. Veritabanı Kavramına Giriş

Veri Tabanı-I 1.Hafta

SİSTEM İHTİYAÇLARI (Tiger Plus / Tiger 3)

UZAKTAN EĞİTİM MERKEZİ

1-Veritabanı Yönetim Sistemleri /Tanım

PostgreSQL ve PL/pgSQL

Veritabanı Yönetim Sistemleri, 2. basım Zehra ALAKOÇ BURMA, 2009, Seçkin Yayıncılık

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

PostgreSQL ile NoSQL. Gereksinimlerinizi Karşılamak

Bilişim. Elektronik Belge Yönetim Sistemi

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

Büyük Veri de Türkiye den Uygulama Örnekleri Dr. Güven Fidan

PostgreSQL Veritabanı Sunucusu. Başarım Arttırma Yöntemleri

EMC Forum Yazılım Temelli Veri Depolama Moro Hekim Sistem Mühendisi

Tavsiye Edilen Önhazırlık Temel veritabanı kavramlar hakkında bilgi sahibi olmak. Hedefler Temel veritabanı güvenlik işlemlerini gerçekleştirebilmek

Bölüm 4: DDL Veri Tanımlama Dili

«BM364» Veritabanı Uygulamaları

Veritabanı, Veri Madenciliği, Veri Ambarı, Veri Pazarı

BÜYÜK VERİ. Abdulkadir ŞAN Proje Yöneticisi 7/1/2014 VERİ SİSTEMLERİ. Anayurt Güvenliği Md. Yrd. Metin Madenciliği ve Kaynaştırma Sistemleri

VERİ TABANI YÖNETİM SİSTEMLERİ-II

Veri Tabanı Yönetim Sistemleri Bölüm - 3

Veritabanı Tasarımı. Alt Sorgu Temelleri

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Sunucu Bilgisayarlarda Kullanılan CISC ve RISC İşlemcilerin Performans Karşılaştırımı

YBS104 - VERİ TABANINA GİRİŞ. Yrd. Doç. Dr. Fırat YÜCEL Akdeniz Üniversitesi Enformatik Bölümü

SQL e Giriş. Uzm. Murat YAZICI

Ders Kodu Yarıyıl T+U Saat Kredi AKTS. Programlama Dilleri

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

Pursaklar İMKB Teknik ve Endüstri Meslek Lisesi

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

Transkript:

NoSql ve MongoDB Saygın Topatan

NoSql ve MongoDB NoSql nedir Neden ihtiyaç duyuldu Tipleri MongoDb Kavramlar Sharding Şema Tasarımı NoSql in geleceği

NoSql Nedir? Nedir 2009 başlarında ortaya çıkmış bir kavram İlişkisel Olmayan Veritabanı Yönetim Sistemi Özellikleri Sabit tablo şemaları gerektirmeyebilir Join işlemlerinden kaçınır Yatay ölçeklenir!

No to Sql?

Neden NoSql? Veri Miktarı 9000 8000 7000 6000 5000 4000 3000 2000 1000 0 Yıllara Göre Saklanan Veri Miktarı ExaByte (10¹⁸) Kaynak: IDC 2011 161 253 397 623 988 7910 2006 2007 2008 2009 2010 2015

Neden NoSql? Uygulama Mimarileri 1980 ler: Mainframe Uygulamaları Uygulama Veritabanı

Neden NoSql? Uygulama Mimarileri 1990 ler: Entegrasyon merkezi olarak veritabanı Uygulama Uygulama Uygulama Veritabanı

Neden NoSql? Uygulama Mimarileri 2000 ler: Artan saklama ve performans ihtiyaçları Uygulama Uygulama Uygulama Veritabanı Veritabanı Veritabanı

Neden NoSql?

Neden Ölçekleme? PowerEdge T110 II (Basic) 8 GB, 3.1 Ghz Quad 4T $1, 350.00 PowerEdge T110 II (Basic) 32 GB, 3.4 Ghz Quad 8T $12, 103.00 PowerEdge C2100-192 GB, 2 x 3 Ghz $19, 960.00 IBM System x3850 X5 8 x 2.4 Ghz, 2048 GB $645, 605.00 K Computer (süper bilgisayar) - 10 petaflops, 705, 024 cores, 1, 377 TB $10, 000, 000 yıllık işletim ücreti Setup ücreti ile ilgili bilgi yok

Neden NoSql? MongoDb vs. Sql Server 2008 MongoDB C# API vs. LINQ to SQL

Neden NoSql? MongoDb vs. Sql Server 2008 MongoDB C# API vs. LINQ to SQL

Neden NoSql? MongoDb vs. Sql Server 2008 Gerçek Dünya verileri MongoDb SQL Server

Neden NoSql? MongoDb vs. Sql Server 2008

NoSql Tipleri Anahtar-Değer Ambarı (Key-Value Stores) Dynomite, Voldemort, Riak, Tokyo Cabinet Doküman Ambarı (Document Store) MongoDB, CouchDB, RavenDB Geniş Sütun Ambarı/Sütun Aileleri (Wide Column Store/Column Families, BigTable Clones) Apache Hbase, HyperTable, Cassandra Graf Veritabanları (Graph Databases) Neo4j, AllegroGraph, InfoGrid

Anahtar Değer Ambarı Tek anahtar tek değer Son derece hızlı Değer ikili (binary) olarak tutulur. Veritabanı değerin verisini anlamaz, anlamak istemez Nesneye erişim anahtar üzerinden olur değer anahtar BlogPost_127 Baslik_ #_NoSql^ ^ ^ Yazar _ #_Saygın ^ ^ ^ GonderiTarihi%/// 133546849998)

Doküman Ambarı (Document Store) Anahtar-değer ambarı, ama değer veritabanı tarafından anlaşılabilir Değer üzerinden sorgu yapmak mümkün doküman anahtar BlogPost_127 { } Baslik: NoSql, Yazar: Saygin, Tarih: 04-02-2012

Geniş Sütun Ambarı/Sütun Aileleri (BigTable Clones) Google BigTable yayınından esinlenilmiştir Dağıtık, çok boyutlu, sıralanmış eşleme Her anahtar birden çok sütun ile eşleştirilir Row_id BlogPost_127 Sütun ailesi Sütun Başlık BlogPost Baslik BlogPost Yazar NoSql Saygın BlogPost Comment GönderiTarihi text 04-02-2012 Paylaşım için teşekkürler

Geniş Sütun Ambarı/Sütun Aileleri (BigTable Clones) Google BigTable 2006 verileri

Graf Veritabanları Veri ilişkilerine odaklanmış graf yapısıdır. Düğümler(nodes) ve bunları bağlayan kenarlar(edges) Her ikisinde de anahtar-değer ikilileri bulunur Yusuf Gizem Emre Aslı

Graf Veritabanları Veri ilişkilerine odaklanmış graf yapısıdır. Düğümler(nodes) ve bunları bağlayan kenarlar(edges) Her ikisinde de anahtar-değer ikilileri bulunur Yaş: 23 Okul: İTÜ Yusuf Yaş: 22 Okul: İTÜ Gizem Yaş: 22 Okul: YTÜ Emre Yaş: 23 Twitter: @delikiz Aslı

Birlikte Yaşar Ödevlerini Yapar Kuzen Graf Veritabanları Veri ilişkilerine odaklanmış graf yapısıdır. Düğümler(nodes) ve bunları bağlayan kenarlar(edges) Her ikisinde de anahtar-değer ikilileri bulunur Yaş: 23 Okul: İTÜ Yusuf sever sever Yaş: 22 Okul: İTÜ Gizem Yaş: 22 Okul: YTÜ Emre sever Yaş: 23 Twitter: @delikiz Aslı

NoSql Tipleri Boyut-Karmaşıklık karşılaştırması Veri Boyutu Anahtar/Değer ambarı BigTable Klonları Key/Value Stores Doküman Ambarları Graf Veritabanları Karmaşıklık (Complexity)

Doküman Tabanlı veritabanı JSON türevi (BSON) bir format kullanır Şemasız Performans C++ da yazılmış Index desteği Ölçeklenebilir Replication Auto-Sharding Ticari destekli (10gen) Bolca doküman

Database == Database Table Index Row == Collection == Index == BSON Document Column == BSON Field

mongodb CREATE TABLE USERS (a Number, b Number) Table db.createcollection("mycoll") ALTER TABLE users ADD...

mongodb SELECT * FROM users db.users.find() SELECT a, b FROM users db.users.find({ }, {a:1, b:1}) SELECT * FROM users WHERE age>33 db.users.find({age:{$gt:33}}) SELECT * FROM users WHERE age=33 ORDER BY name db.users.find({age:33}).sort({name:1})

mongodb SELECT DISTINCT last_name FROM users db.users.distinct('last_name') SELECT COUNT(*) FROM users db.users.count() SELECT COUNT(AGE) from users db.users.find({age: {'$exists': true}}).count()

mongodb Indexleri // Artan db.users.ensureindex({name:1}) // Eşsiz db.users.ensureindex({name:1}, {unique:true}) //Sessiz, Bloklamayan db.users.ensureindex({name:1}, {background:true}) //Bileşik db.users.ensureindex({name:1}, {age:-1})

mongodb Auto Sharding Verinin her parçası ayrı bir sunucu (shard) tarafından yönetilir Her bir sunucu da verinin bir alt kümesi üzerinde tam kontrole sahiptir Veritabanı işlemleri mümkünse bir shard üzerinde, değilse birden çok sunucu üzerinde yapılır Sistem yükü değiştikçe, verinin sunuculara dağıtılması otomatik olarak dengelenir

Auto Sharding Mimari Görünümü 0 <= userid < 2000 2000<= userid < 5000 5000 <= userid < 9000 mongod mongod mongod mongos istemci

Auto Sharding Mimari Görünümü

Şema Tasarımı Erişim? OLAP OLTP Güncelleme tipleri Sorgu Tipleri Dikkat! Join yok Transaction yok Şema performansı etkileyen en önemli faktör RDBMS e göre daha fazla tasarım seçeneği var Embedding, indexler, shard anahtarları

Şema Tasarımı Şemasız Id Tip Alan Yaricap Kenar Genislik Uzunluk 1 Çember 3.14 1 2 Kare 4 2 3 Dikdörtgen 10 2 5 db.sekil.find() {id:"1", tip: çember", alan:3.14, yaricap:1} {id: 2", tip: kare", alan:4, kenar:1} {id: 3", tip: dikdortgen", alan:10, genislik:2, uzunluk:5}

Blog Post - Gömülü { } id:"post/saygin/2012-02-04/", yazar:"saygin", baslik:"nosql ve MongoDB", etiketler:["mongodb","nosql"], yorumlar:[ { yazar:"yusuf", baslik:"harika!", tarih:"2012-02-04" } ] Okuma performansı için çok iyi Tüm nesneyi tek seferde yüklüyor Veritabanına tek git-gel yapılıyor Sürekli yazma ihtiyacı varsa, yazma yavaş olabilir

Blog Post Gömülü Değil Blog.posts { id:"post/saygin/2012-02-04/", yazar:"saygin", baslik:"nosql ve MongoDB", etiketler:["mongodb","nosql"] } Blog.yorumlar { post:"post/saygin/2012-02-04/", yazar:"yusuf", baslik:"harika!", tarih:"2012-02-04" }

Blog Post - Hibrid Blog.yorumlar { id: "post/saygin/2012-02-04/1----1", yorumlar:[ { yazar:"yusuf", baslik:"harika!", tarih:"2012-02-04" }, { yazar: Hasan", baslik: Güzel Paylaşım", tarih:"2012-02-04" }, } ]

Indeksler Ortak sorgulara göre indeksler oluşturulmalı Duplike indeksler olmamalı : (A,B) varsa (A) gereksiz Gereksiz indeksler yazma-güncelleme performansını etkiler

Shard Anahtarı Seçmek Shard anahtarı verinin nasıl dağıtılacağını belirler Değiştirmesi zordur En önemli performans kararı (Sharding)

NoSql in geleceği RDBMS Veri bütünlüğü Normalizasyon Mevcut sistemler, üreticiler (Oracle, microsoft..) Veritabanı araçları (Raporlama, analiz, 3rd party) Ölçekleme problemleri

Doğru Aracı Seçmek

Teşekkürler Saygın Topatan Saygin@sirkethaberleri.com @saygin