<?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>TechNiq &#187; Bases de datos</title>
	<atom:link href="http://techniq.mx/category/bases-de-datos/feed/" rel="self" type="application/rss+xml" />
	<link>http://techniq.mx</link>
	<description>Pequeñas dosis de la programación nuestra de cada día</description>
	<lastBuildDate>Mon, 26 Dec 2011 10:26:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Bases de datos no relacionales: MongoDB</title>
		<link>http://techniq.mx/2010/07/bases-de-datos-no-relacionales-mongodb/</link>
		<comments>http://techniq.mx/2010/07/bases-de-datos-no-relacionales-mongodb/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 18:33:07 +0000</pubDate>
		<dc:creator>danielniquet</dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[MongoDB]]></category>

		<guid isPermaLink="false">http://techniq.mx/?p=338</guid>
		<description><![CDATA[Bueno, al parecer MongoDB no es un tema nuevo, pero para mi sí, así que comparto mi experiencia inicial con esta base de datos. De momento, comentaré el procedimiento que yo tuve que hacer para que todo funcione en mi &#8230; <a href="http://techniq.mx/2010/07/bases-de-datos-no-relacionales-mongodb/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bueno, al parecer <a href="http://www.mongodb.org/" target="_blank">MongoDB </a>no es un tema nuevo, pero para mi sí, así que comparto mi experiencia inicial con esta base de datos. De momento, comentaré el procedimiento que yo tuve que hacer para que todo funcione en mi windows XP, en el que estaré haciendo ejercicios para aprender, posteriormente veremos algo en productivo.</p>
<h3>¿Qué es?<span id="more-338"></span></h3>
<p>Es una base de datos no relacional, lo que le llaman <a href="http://en.wikipedia.org/wiki/NoSQL" target="_blank">NoSQL</a>, es decir, no utiliza SQL. Vaya que el cambio de paradigma es complicado para los que vinimos de la vieja escuela! En lo personal me cuesta trabajo comprender bien el concepto, pero poco a poco saldrá. Usa <a title="JSON (JavaScript Object Notation) is a lightweight data-interchange format." href="http://www.json.org/" target="_blank">JSON </a>para su consulta y almacenamiento, para aumentar la sencillez de uso. <a title="The Apache Cassandra Project develops a highly scalable second-generation distributed database, bringing together Dynamo's fully distributed design and..." href="http://cassandra.apache.org/" target="_blank">Cassandra </a>(después compartiremos los tutoriales e información correspondiente) es otro tipo de base de datos basado en el mismo concepto, y los gigantes <a title="Síguenos en Twitter" href="http://twitter.com/techniqmx" target="_blank">twitter </a>y <a title="hazte fan techniq en Facebook!" href="http://www.facebook.com/pages/techNiq/137222736291565" target="_self">facebook </a>lo utilizan.  Con esto podemos comprobar la velocidad, escalabilidad y estabilidad que ofrecen las bases de datos no relacionales. Mas o menos transcrito y mal traducido del <a href="http://www.mongodb.org/" target="_blank">website</a> de MongoDB:</p>
<blockquote><p>MongoDB es el enlace perfecto entre el almacenamiento clave/valor (que son rápidos y altamente veloces) y los sistemas tradicionales de  RDBMS (que proporcionan consultas ricas y una profunda funcionalidad ).</p>
<p>MongoDB es escalable, de alto desempeño, de código abierto, base de datos orientada a documentos. Escrito en C++ ofrece las siguiente características:</p>
<ul>
<li>Almacenamiento orientado a documentos:<br />
Documentos estilo JSON con esquemas dinámicos ofrecen simplicidad y poder.</li>
<li>Soporte Full index:<br />
Indices sobre cualquier atributo, tal y como estamos acostumbrados.</li>
<li>Replicación y alta disponibilidad:<br />
Espejos entre LANs y WANs</li>
<li>Auto-Sharding:<br />
Escalabilidad horizontal sin comprometer la funcionalidad.</li>
<li>Consultas:<br />
Ricas y basadas en  documentos</li>
<li>Rápidas actualizaciones en el contexto.</li>
<li>Mapeo y reducción:<br />
Agregación flexible y procesamiento de datos.</li>
<li>GridFS:<br />
Almacena archivos de cualquier tamaño sin complicar tu &#8220;stack&#8221;.</li>
<li>Soporte comercial:<br />
Soporte comercial, capacitación y consultoría disponibles.</li>
</ul>
</blockquote>
<p>Algunos sitios importantes que utilizan ya MongoDB son:</p>
<ul>
<li><a href="http://www.justin.tv/" target="_blank">justin.tv</a></li>
<li><a title="Etsy" href="http://www.etsy.com/" target="_blank">Etsy</a></li>
<li><a title="We're all about helping you find new ways to explore the city." href="http://foursquare.com/" target="_blank">foursquare</a></li>
<li><a title="Create photo books, personalize photo cards &amp; stationery, and share photos with family and friends at Shutterfly.com." href="http://www.shutterfly.com/" target="_blank">shutterfly</a></li>
<li><a title="Offers URL redirection service with real-time link tracking." href="http://bit.ly/" target="_blank">bit.ly</a></li>
<li><a title="SourceForge.net. Fast, secure and free downloads from the largest Open Source applications and software directory." href="http://http://sourceforge.net/" target="_blank">sourceforge</a></li>
<li><a title="Boxed Ice is a software development company. Our first product is Server Density, a server monitoring application." href="http://www.boxedice.com/" target="_blank">boxedIce</a></li>
<li><a title="Disqus is a global comment system that improves discussion on websites and connects conversations across the web." href="http://disqus.com/" target="_blank">disqus</a></li>
<li><a href="http://www.businessinsider.com/" target="_blank">Business insider</a></li>
</ul>
<h3>¿Cómo instalar MongoDB?</h3>
<p>Bueno, ahora sí comienza lo bueno.</p>
<p>Lo primero que hice fue descargar la versión <a title="descargar MongoDB 1.4.4 para windows 32 bits" href="http://fastdl.mongodb.org/win32/mongodb-win32-i386-1.4.4.zip" target="_blank">MongoDB 1.4.4</a> para windows de 32 bits, que es la última versión que me indicaba en su <a title="Sitio de descargas de MongoDB" href="http://www.mongodb.org/downloads" target="_blank">sitio de descargas</a>. Este es un archivo ZIP.</p>
<p><a href="http://techniq.mx/wp-content/uploads/2010/07/mongo01.jpg"><img class="aligncenter size-full wp-image-341" title="mongo01" src="http://techniq.mx/wp-content/uploads/2010/07/mongo01.jpg" alt="" width="440" height="237" /></a></p>
<p>Una vez descargado, puedes instalar el contenido en cualquier carpeta de tu equipo. Yo lo hice directo en la raiz del disco duro, en C:/mongodb</p>
<p><a href="http://techniq.mx/wp-content/uploads/2010/07/mongo02.jpg"><img class="aligncenter size-full wp-image-342" title="mongo02" src="http://techniq.mx/wp-content/uploads/2010/07/mongo02.jpg" alt="Ruta de MongoDB" width="440" height="168" /></a></p>
<p><a href="http://techniq.mx/wp-content/uploads/2010/07/mongo03.jpg"><img class="alignleft size-full wp-image-343" title="mongo03" src="http://techniq.mx/wp-content/uploads/2010/07/mongo03.jpg" alt="Ruta default donde se almacenan las Bases de datos de MongoDB" width="141" height="56" /></a>Con eso queda instalado <img src='http://techniq.mx/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Es importante crear una carpeta C:\data\db, que es donde por default se almacenan las bases de datos de MongoDB. Supongo que es posible cambiarlo, pero como soy primerizo en el tema, así lo dejé.</p>
<h3>Poner en marcha</h3>
<p>Bueno creo que echar a andar MongoDB en windows es muy sencillo, sólo tienes que lanzar dos archivos ejecutables, llamados mongod.exe y mongo.exe, en ese órden. Esto está en la carpeta &#8220;bin&#8221; de MongoDB, en este caso, c:/mongodb/bin</p>
<div id="attachment_345" class="wp-caption aligncenter" style="width: 403px"><a href="http://techniq.mx/wp-content/uploads/2010/07/mongo04.jpg"><img class="size-full wp-image-345" title="mongo04" src="http://techniq.mx/wp-content/uploads/2010/07/mongo04.jpg" alt="" width="393" height="314" /></a><p class="wp-caption-text">Órden en que debe lanzarse los ejecutables de MongoDB en windows</p></div>
<p>Una vez ejecutados ambos archivos, te saldrán unas ventanas de comando, una es como el servicio de MongoDB (mongod.exe) y la otra es el shell(mongo.exe), en donde sucederá toda la magia. Siempre hay que tener ambas abiertas para poder utilizar MongoDB.</p>
<p><a href="http://techniq.mx/wp-content/uploads/2010/07/mongo05.jpg"><img class="aligncenter size-full wp-image-347" title="Servicio de MongoDB y shell" src="http://techniq.mx/wp-content/uploads/2010/07/mongo05.jpg" alt="Servicio de MongoDB y shell" width="440" height="259" /></a></p>
<p>Es todo, tenemos MongoDB instalado y funcionando perfectamente en nuestro equipo. Para corroborarlo, en la ventana de Shell podemos escribir &#8220;help&#8221;. Eso nos dará la serie de comandos disponibles para la gestión de las bases de datos de MongoDB.</p>
<p><a href="http://techniq.mx/wp-content/uploads/2010/07/mongo06.jpg"><img class="aligncenter size-full wp-image-348" title="El comando help de MongoDB ofreciéndonos la lista de comandos" src="http://techniq.mx/wp-content/uploads/2010/07/mongo06.jpg" alt="El comando help de MongoDB ofreciéndonos la lista de comandos" width="440" height="260" /></a></p>
<p>Enhorabuena! MongoDB está funcionando perfectamente en tu equipo con windows. En el siguiente artículo de esta serie sobre MongoDB nos adentraremos en el uso de ésta poderosa y simple base de datos, así como su uso en lenguajes como PHP y python.  De momento, sólo una probadita:</p>
<div id="attachment_351" class="wp-caption aligncenter" style="width: 450px"><a href="http://techniq.mx/wp-content/uploads/2010/07/mongo07.jpg"><img class="size-full wp-image-351" title="Demostración de la sencillez de uso de MongoDB" src="http://techniq.mx/wp-content/uploads/2010/07/mongo07.jpg" alt="Demostración de la sencillez de uso de MongoDB" width="440" height="251" /></a><p class="wp-caption-text">Demostración de la sencillez de uso de MongoDB</p></div>
<p style="text-align: center;">
<p><code><br />
<strong>1.- &gt; use dbprueba<br />
switched to db dbprueba<br />
2.- &gt; db.tabla1.insert({"campo1":"valor1", "campo2":"valor2", "campo3":["dato1","dato2", "dato3"]})<br />
3.- &gt; db.tabla1.find()</strong></code></p>
<p><strong> </strong>El resultado sería:</p>
<p>{ &#8220;_id&#8221; : ObjectId(&#8220;4c3caa29e36d000000003d45&#8243;), &#8220;campo1&#8243; : &#8220;valor1&#8243;, &#8220;campo2&#8243; :<br />
&#8220;valor2&#8243;, &#8220;campo3&#8243; : [ "dato1", "dato2", "dato3" ] }</p>
<p>Con la línea 1, creamos una base de datos,y además hacemos un switch sobre la misma para trabajar sobre ella</p>
<p>Con la línea 2, creamos lo que podría equivaler a una tabla(en las bases de datos no hay tablas se llaman colecciones y lo veremos en el siguiente artículo), le añadimos tres campos llamados campo1, campo2 y campo3, de tipo varchar los primeros dos, y de tipo enum el tercero. Y además le agregamos valores a cada uno de ellos, así como la enumeración en el caso del último campo.</p>
<p>Con la línea 3 mostramos lo que hay en la coleccion llamada tabla1.</p>
<p>Para los que están acostumbrados a las bases de datos relacionales, lo anterior, en mysql, lo hubieramos tenido que hacer mas o menos de la siguiente manera:</p>
<p>&gt;<code>CREATE  DATABASE 'dbprueba' ;<br />
&gt;USE 'dbprueba';<br />
&gt;CREATE TABLE 'tabla1' (<br />
`campo1` varchar(20) DEFAULT NULL,<br />
`campo2` varchar(20) DEFAULT NULL,<br />
`campo3` enum('dato3','dato2','dato1') DEFAULT NULL<br />
) ENGINE=MyISAM DEFAULT CHARSET=latin1;<br />
&gt;INSERT INTO 'tabla1' (<br />
`campo1` ,<br />
`campo2` ,<br />
`campo3`<br />
)<br />
VALUES (<br />
'valor1', 'valor2', 'dato3'<br />
);<br />
&gt;SELECT * FROM 'tabla1'</code></p>
<p>Mas o menos así sería la cuestión, como vemos su uso es incuso más sencillo, y nos evitamos escribir muchas líneas.  Esto es sólo una idea, pero ya iremos adentrándonos un poco más en el maravilloso mundo de MongoDB.</p>
<p>Te dejo los enlaces correspondientes para comenzar con MongoDB wn windows. Con linux, seguramente los que lo utilizan les será aún más fácil el proceso.</p>
<ul>
<li><a title="Comienza con MongoDB en windows" href="http://www.mongodb.org/display/DOCS/Quickstart+Windows" target="_blank">Quickstart con windows</a></li>
<li><a title="descargar MongoDB 1.4.4 para windows" href="http://www.mongodb.org/display/DOCS/Quickstart+Windows#QuickstartWindows-Download" target="_blank">Descargas para windows</a></li>
<li><a title="Tutorial de MongoDB" href="http://www.mongodb.org/display/DOCS/Tutorial" target="_blank">Tutorial de MongoDB</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://techniq.mx/2010/07/bases-de-datos-no-relacionales-mongodb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

