<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rayyildiz.com &#187; mongodb</title>
	<atom:link href="http://rayyildiz.com/tag/mongodb/feed/" rel="self" type="application/rss+xml" />
	<link>http://rayyildiz.com</link>
	<description>Bilgi Paylaşıldıkça Güzelleşir</description>
	<lastBuildDate>Mon, 16 Jan 2012 11:07:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>NoSQL Giriş ve MongoDB</title>
		<link>http://rayyildiz.com/2010/05/nosql-giris-ve-mongodb/</link>
		<comments>http://rayyildiz.com/2010/05/nosql-giris-ve-mongodb/#comments</comments>
		<pubDate>Sat, 08 May 2010 15:42:57 +0000</pubDate>
		<dc:creator>rayyildiz</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[Nosql]]></category>

		<guid isPermaLink="false">http://rayyildiz.com/?p=126</guid>
		<description><![CDATA[NoSQL, isminden de anlaşılabileceği gibi SQL kullanılmadığı veritabanlarına verilen genel bir isimdir. Genelde ORM ile karıştırılmaktadır. NoSQL, işişkisel veritabanlarına (RDMS) alternatif bir tekniktir. ilişkisel bir veritabanında (RDMS), tablolar oluşturur, tabloları birbirleriyle ilişki kurarak, join, kartezyen gibi SQL cümlecikleriyle kullanırız. Bunun birçok faydası vardır. Hatta yazılım geliştirirken, SQL den kaçınmak maksadıyla, ORM aracları geliştirilmiştir. Bu sayede, [...]]]></description>
			<content:encoded><![CDATA[<p>NoSQL, isminden de anlaşılabileceği gibi SQL kullanılmadığı veritabanlarına verilen genel bir isimdir. Genelde ORM ile karıştırılmaktadır. NoSQL, işişkisel veritabanlarına (<a href="http://en.wikipedia.org/wiki/Relational_database_management_system">RDMS</a>) alternatif bir tekniktir.</p>
<p>ilişkisel bir veritabanında (RDMS), tablolar oluşturur, tabloları birbirleriyle ilişki kurarak, join, kartezyen gibi SQL cümlecikleriyle kullanırız. Bunun birçok faydası vardır. Hatta yazılım geliştirirken, SQL den kaçınmak maksadıyla, <a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank">ORM</a> aracları geliştirilmiştir. Bu sayede, veritabanında yer alan tablolara, nesne gözüyle bakılabilmiş, OOP mantığıyla üzerinde işlem yapılabilmiştir.</p>
<p>NoSQL ise böyle birşey değildir. ORM araçları, sizin bir nesneye set ettiğiniz değerleri, SQL cevirerek, sizin SQL ile uğraşmanızı engellemiş olurlar. NoSQL veritabanları dağıtık bir mimari ile oluşturulmuş olup, yarının teknolojisi olarak görülmektedirler. Google&#8217;ın BigTable, Amazon&#8217;un Dynamo, Facebook&#8217;un <a href="http://cassandra.apache.org/" target="_blank">Cassandra</a> bu tür birer veritabanlarıdır.Bu üç veritabanı da <a href="http://en.wikipedia.org/wiki/Petabyte" target="_blank">PB</a> boyutunda veri tutmak için geliştirilmiştir. Ben bunlardan konfigurasyon acısından daha kolay yapılan döküman tabanlı bir veritabanı hakkında bilgi vereceğim: <a href="http://www.mongodb.org" target="_blank">MongoDB</a>.</p>
<p><span id="more-132"></span>MongoDB, 10gen tarafından geliştirilmiş, döküman tabanlı bir NoSQL veritabanıdır. Bu <a href="http://www.mongodb.org/display/DOCS/Downloads" target="_blank">bağlantıdan</a> işletim sisteminize göre indirebilrisiniz. Eğer Ubuntu/Debian kullanıyorsanız, <a href="http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages" target="_blank">bu adresten</a> nasıl kurabileceğinizi bakabilirsiniz.</p>
<p><strong>Örnek Java Projesi</strong></p>
<p>MongoDB denemek amacıyla örnek bir java projesi yazacağız. MongoDB ye odaklanmak amacıyla yazdığımız uygulama, konsol uygulaması olacak ve IDE olarak <a href="http://www.netbeans.org" target="_blank">netbeans</a> kullanacağız.</p>
<p>İlk önce yapmanız gereken <a href="http://github.com/mongodb/mongo-java-driver/downloads" target="_blank">mongo-java-driver</a> indirmek. Ben şu an stable versiyonu <a href="http://github.com/downloads/mongodb/mongo-java-driver/mongo-1.4.jar">mongo-1-4.jar</a> ı tercih ettim.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/nb_create_project1.png" rel="lightbox[132]"><img class="size-full wp-image-127 alignnone" title="nb_create_project" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/nb_create_project1.png" alt="" width="497" height="334" /></a></p>
<p>Daha sonra netbeans ile örnek bir java uygulaması açıyorum. Bundan sonra yapmanız gereken, mongo java driver library olarak eklemek. Bunun için şu şelilde yapabilrisiniz.</p>
<p><a href="http://www.rayyildiz.com/wp-content/uploads/2011/02/get_mongo_driver1.png" rel="lightbox[132]"><img title="get_mongo_driver" src="http://www.rayyildiz.com/wp-content/uploads/2011/02/get_mongo_driver1.png" alt="" width="496" height="371" /></a></p>
<p>Bşir tane Book adında kitap sınıfı yazalım. Bu yazdığımız nesne, &#8220;BasicDBObject&#8221; nesnesinden türetiyoruz ve getXxx- setXxx, BasicDBObject dan gelen put ve get metotlarını kullanacağız.</p>
<p><a href="http://rayyildiztemp.files.wordpress.com/2010/05/code_book.png" rel="lightbox[132]"><img class="alignnone size-full wp-image-129" title="code_book" src="http://rayyildiztemp.files.wordpress.com/2010/05/code_book.png" alt="" width="497" height="388" /></a></p>
<p>MongoDB ye erişmek için şu adımları takip ederiz.</p>
<ul>
<li>Bir Mongo nesnesi alırız. Bu nesne mongodb ye bağlanmak içindir.</li>
<li>Mongo dan bir DB alırız. Bu db eğer varsa o gelir, yoksa yenisi oluşturulur.</li>
<li>DB nesnesinden DBCollection alırız. DBCollection- tablodur.</li>
<li>Insert için bir DBObject ( veya BasicDbObject) bu DBCollection&#8217;a insert ederiz.</li>
<li>Bu DBCollection içinde gezmek için ise DBCollectiondan bir DBCursor oluşturup, DBCursor içinde dolaşırız.</li>
</ul>
<p>Şunu bilmeniz gerekiyor. NoSQL, anlayabilmek için sürekli kullandığımız ilişkisel veritabanı mantığını bir kenera bırakmamız gerekiyor. Özellikle çok büyük veriler için kullanılan bu veritabanları, elbette güzel özelliklerinin yanında (hız) eksik yanları da vardır (Her ne kadarda bu eksik yanları kapatılması için teknikler olsa bile). Size tafsiyem bir banka uygulaması geliştiriyorsanız, NoSQL kullanmak isterseniz bir kere daha düşünmeniz. Bunun yanında, sosyal bir ağ geliştiriyorsanız, bildiğiniz RDMS in dışına çıkmak çok güzel sonuçlar da doğurabilir.</p>
<p>Burada gerçekleştirdiğimiz örnek uygulamayı <a href="http://github.com/downloads/rayyildiz/TestProject/MongoDBTest.tar.gz" target="_blank">buradan</a> indirebilirsiniz. Şimdilik sadece giriş amacındaki bu yazıyı burada  bırakayım.</p>
]]></content:encoded>
			<wfw:commentRss>http://rayyildiz.com/2010/05/nosql-giris-ve-mongodb/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

