Translate

martes, 9 de julio de 2013

Haciendo indices con MongoDB

MongoDB es una base de datos NoSQL muy conocida, es una base documental, sin esquema, lo que guarda es BSON que es un formato muy similar a JSON. En vez de tablas tiene colecciones, vuelvo a repetir; las colecciones no tienen un esquema determinado por ejemplo tenemos la colección friends:

> db.people.find()
{ "_id" : "Mike", "interests" : [  "chess",  "botany" ] }
{ "_id" : "Juan", "interests" : [  "chess",  "Boca Junior", "Linux" ], "facebook": "juanf", gplus:"juanPlus" }
{ "_id" : "Homero", "interests" : [  "beer",  "more beer" ], "facebook": "homeroS" }

Como podemos ver no hay muchos amigos, podrían ser millones o billones o más lo que haría que funcione muy lento. Si buscamos por algún campo, MongoDB hace lo que se conoce como un full scan, revisa todas las colecciones buscando. Es poco eficiente, y aqui es donde aparecen los indices, los indices le permiten encontrar algo a la base, sin recorrer toda la colección; es algo así como el indice de la guía telefónica con el podemos encontrar un número más rápidamente. Como podemos hacer un indice en MongoDB? 

db.collection.ensureIndex(keys. options)

Para nuestro ejemplo sería así:

db.people.ensureIndex({"facebook":1})

Podemos utilizar varios atributos para indexar y en mongoDB podemos indexar arreglos, ya se lo que estas pensando lleno mi base de indixes y todo va andar super rápido. Pero no es así los indices agilizan las consultas pero penalizan las modificaciones e inserciones, tenes que insertar o modificar en la colección y el indice. Por lo tanto no es recomendable generar indices que no se van a usar, no voy a buscar nunca a un amigo por su cuenta de google plus entonces no hago el indice. 

Con el 1 se especifica el orden 1 ascendente y -1 descendente. 

Que pasa cuando no existe siempre el campo? se indexa igual pero vas a tener problemas si el index es único, supongamos:

db.people.ensureIndex({facebook:1}, { unique: true })

Dejo link:


Apache Whirr

Apache Whirr es un conjunto de librerías para el funcionamiento de servicios en la nube. Pero eso que significa? que nos provee Whirr?

  • Ejecutar servicios de la nube de forma neutral. Usted no tiene que preocuparse acerca de la idiosincrasia de cada proveedor.
  • Un API de servicios comunes. Los detalles de implementación son particulares para cada uno de los servicio.
  • Provee una forma de conectarse rápidamente con la nube con una configuración por defecto que luego se puede cambiar. 
  • También puede utilizar Whirr como una herramienta de línea de comandos para el despliegue de clusters.
Si queremos instalar este producto en linux solo tenemos que hacer:

sudo apt-get install whirr

Esto es un debian compatible.

Y si somos más valientes bajamos el codigo y lo compilamos:

git clone git://git.apache.org/whirr.git
mvn install

Y luego lo agregamos al PATH

export PATH=$PATH:/path/to/whirr/bin

Y con esto lo tenemos andando!!

El objetivo de este producto es poder llevar a Hadoop a la nube de forma fácil,y de esta forma unir Big data con cloud.

Como podremos imaginar se distribuye con licencia Apache 2.

Dejo link:
http://whirr.apache.org/
http://whirr.apache.org/docs/0.8.1/quick-start-guide.html

Dentro de Google

Quiero compartir este documental bastante interesante sobre google:


Infografía de los proyectos más descargados de Github


Microsoft regala un monton de libros


La gente de Microsoft decidió regalar muchos libros sobre su tecnologías y eso es ta perfecto.

Dejo link:
http://blogs.msdn.com/b/mssmallbiz/archive/2013/06/18/huge-collection-of-free-microsoft-ebooks-for-you-including-office-office-365-sharepoint-sql-server-system-center-visual-studio-web-development-windows-windows-azure-and-windows-server.aspx

viernes, 5 de julio de 2013

Eclipse Kepler


Eclipse kepler es un nuevo release de mi IDE favorita, por lejos. Donde me siento cómodo. Fue muy esperado este release por mi, porque Eclipse Juno no funciona muy bien. La performance de Juno decayó mucho y hay varios bug, bastante grandes. Por lo tanto estoy muy contento con Kepler.

Entre las novedades que trae son:

  • Eclipse Web Tools Platform (WTP) 3.5 : soporte para el desarrollo Java EE 7.
  • Stardust 1.0 : provee un completo soporte para BPM (Business Process Management), 
  • Orion 3.0 : incluye características de usabilidad importantes y más fácil desarrollo de aplicaciones java para servidor. 
  • Business Intelligence and Reporting Tools (BIRT) : soporte para Big Data y bases NoSQL como mongoDB y Casandra. 
  • Mylyn : ahora incluye un mejor soporte para las revisiones de código a través del navegador y la integración con Gerrit.
  • Maven Integration for WTP: hace que ahora sea más fácil de usar Maven en proyectos Java EE con Eclipse.

Y espero que tenga mucho BugFixing y que le hayan dado bola a la performance.

Quien es Kepler?

Johannes Kepler, figura clave en la revolución científica, astrónomo y matemático alemán; fundamentalmente conocido por sus leyes sobre el movimiento de los planetas en su órbita alrededor del Sol. Fue colaborador de Tycho Brahe, a quien sustituyó como matemático imperial de Rodolfo II.
En 1935 la UAI decidió en su honor llamarle «Kepler» a un astroblema lunar.

Dejo link:
http://www.eclipse.org/kepler/


O'Reilly ofrece acceso gratuito online a 10 de sus libros

Leyendo javahispano me encontré con la grata sorpresa, de que O'Reilly  ofrece acceso gratuito a 10 de sus libros. No se sabe bien el porque; pero a disfrutar!!

Dejo link:
http://www.javahispano.org/portada/2013/7/4/oreilly-ofrece-acceso-gratuito-online-a-10-de-sus-libros.html
http://www.pixelstech.net/article/1372856157_Read_10_new_books_from_O_Reilly_for_free

Documental Codigo Linux

Quiero compartir el siguiente documental sobre Linux, esta muy bueno!!


miércoles, 3 de julio de 2013

Fedora 19 esta aquí !!


El 2 de Julio se dio a conocer la versión 19 del sistema operativo Fedora, y ya lo estoy bajando!!

La novedades que nos trae son:

  • Diversas herramientas destinadas a mejorar el soporte para impresoras 3D y modelado en 3D 
  • El reemplazo de MySQL por MariaDB 
  • Mejoras importantes en el instalador Anaconda 
  • Nuevas versiones de software de desarrollo como OpenShift Origin, Node.js, NPM, Ruby 2.0 y Rails 4, entre otros.
  • GNOME 3.8, 
  • KDE 4.10, 
  • MATE 1.6,
  • kernel Linux 3.9, 
  • Firefox 22, 
  • LibreOffice 4  
  • un largo etcétera

Que más agregar? A probarlo!

Dejo link:
https://fedoraproject.org/es/get-fedora
http://download.fedoraproject.org/pub/fedora/linux/releases/19/Live/x86_64/Fedora-Live-Desktop-x86_64-19-1.iso
http://docs.fedoraproject.org/en-US/Fedora/19/html/Release_Notes/index.html

Software Engineering for Software as a Service!

La gente de EDX publico un nuevo curso muy interesante sobre software como servicio. En este curso nos enseñan a diseñar software como servicio, utilizando la plataforma ruby on rails.

Dejo link: https://courses.edx.org/courses/BerkeleyX/CS-169.1x/2013_Summer/info

lunes, 1 de julio de 2013

sábado, 29 de junio de 2013

Oracle 12c listo para bajar!!


Aunque todavía no se anuncio la versión 12c de la base de datos pero ya esta para descargar y obviamente para comprar.

La C es de Cloud por que esta base esta pensada para la nube, incluye una característica que Oracle llama “bases de datos conectables”, las cuales permiten que una sola instancia de base de datos Oracle aloje muchas bases de datos, lo cual permite un uso más eficiente de los recursos del sistema y una administración más sencilla. Oracle también ha posicionado las bases de datos conectables como la mejor forma de lograr la multitenancy para las aplicaciones de nube.

Los proveedores de SaaS (software as a service) generalmente han utilizado la multitenancy a nivel de las aplicaciones, cuando varios clientes comparten una sola instancia de aplicación mientras sus datos se mantienen aparte. Trasladar la multitenancy a la capa de la base de datos proporciona una mejor seguridad y otras ventajas.

La capacidad de multitenancy se venderá como una opción separada, y no se recibirá como parte de los pagos anuales por mantenimiento de los clientes. En una lista oficial de precios de Oracle, que fue actualizada el martes, se podía ver una opción de base de datos multitenant con un precio de 17.500 dólares por procesador. Y una licencia de procesador para la Enterprise Edition seguía con un precio de 47.500 dólares por procesador.

Dejo link:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf

miércoles, 26 de junio de 2013

try catch


Júrenlo!! Por lo que más quieran nunca hagan esto:

try {

//hacer algo

} catch (Exception e) {
}

Por que para que van a hacer un catch si no van a hacer nada, por lo menos dejen un mensaje, algo!

No entienden que otro programador puede estar toda la mañana buscando que se rompió en millones lineas de código hasta encontrar que ustedes no hacen nada con la excepción? Ojo siempre hagan algo, si hay una excepción es por algo, y ni hablar si capturan Exception.

try {

//hacer algo

} catch (Exception e) {
           System.out.println("Che se rompe acá!!");
}

Si podría ser más claro el mensaje, podría usar log4j; lo que quieran; imprimir el stack trace, pero hagan algo!

Y esto aplica a cualquier lenguaje! o tecnología!!

martes, 25 de junio de 2013

Bigdata University



La verdad que la gente de IBM se paso con el sitio
bigdata university, es un sitio donde uno puede tomar cursos gratuitos sobre bigdata y db2.


Esta muy bueno! Lo recomiendo.


Dejo un video:


Dejo el link:
http://bigdatauniversity.com/

DB2 Express ahora cuenta con 16 GB de RAM


Hace tiempo vengo promocionando DB2 Express, por que? porque de las versiones express de base de datos comerciales me parece una de las mejores; además esta orientada al aprendizaje.

Leyendo infoQ me encuentro con la noticia que la nueva versión de DB2 Express nos permite utilizar 16 gigas de memoria. IBM ha flexibilizado las restricciones de memoria en la versión gratuita de su base de datos. La versión 10.5 de DB2 Express-C puede ahora utilizar hasta 16 GB de RAM. El producto ya permitía utilizar espacio ilimitados en disco, pero se limita a un único socket (2 núcleos).

Por el contrario, SQL Server Express se limita a 1 socket (4 núcleos), 1 GB de RAM y 10 GB de almacenamiento. Oracle 11g Express es igualmente restrictiva con 1 CPU, 1 GB de RAM y 11 GB de storage.DB2 está disponible para Windows (x86/x64), Linux (x86, x64, Power Systems), Solaris y OS X. DB2 puede ser gestionado desde la consola o con la herramienta gratuita, IBM Data Studio.

Ya se lo que van a opinar, porque no Postgres o MySQL y tienen razón. Antes que un producto express, mejor un producto open source con una comunidad. Eso no lo discuto! Lo que simplemente opino es que si queremos aprender un producto comercial, porque pensamos comprarlo o porque en nuestra empresa lo utiliza. DB2 Express es muy bueno!

La verdad es que hace mucho que no lo utilizo, pero es una buena oportunidad.

Dejo links:
http://www.infoq.com/news/2013/06/DB2-Express-RAM
http://www.db2teamblog.com
https://www14.software.ibm.com/webapp/iwm/web/pick.do?source=swg-db2expressc&S_CMP=db2teamblog