Tag Archives: MongoDB

Links of the month (December Edition)

The year 2014 has passed with a lot of exciting stuff for a developer, especially in the .NET area. Today’s Links of the month shows what has happened in the last month of this exciting year.

Microsoft Azure

ASP.NET

NoSQL

Hadoop

Miscellaneous

Have fun!

Jan (@Horizon_Net)

Advertisements

Unterlagen zu “API Services – Die perfekte Kombination aus Microsoft Azure und ASP.NET Web API” jetzt online

Folien, Demo und die Aufzeichnung meiner gestrigen MVP Mentor Session “API Services – Die perfekte Kombination aus Microsoft Azure und ASP.NET Web API” sind nun online verfügbar.

Präsentation

Video

Demo

Web API: MongoNotes

Viel Spaß damit!

– Jan (@Horizon_Net)

Links of the month (April Edition)

Another month has past and after Build we had a lot to do (or still have to). The problem is that Microsoft (and especially the Azure team) is still delivering new stuff. Today I have some interesting readings from April. It ranges from ASP.NET Identity over Application Insights to the announcement of TypeScript 1.0 … and of course the newest releases on Microsoft Azure.

Continue reading

Links of the month (January Edition)

The year has just started and there are already new things you can investigate. Today I’m presenting some articles from January which I think are worth reading. This month they are mostly focused on ASP.NET Identity, an authentication framework, which helps to build secure applications more easily.

Continue reading

MongoDB in Windows Azure

Nachdem es beim letzten Mal um agile Virtualisierung mit Windows Azure ging möchte ich heute in eine ähnliche Richtung gehen beziehungsweise darauf aufbauen.

Vor fast einem Jahr habe ich in Zusammenarbeit mit der Developer Platform Evangelism Group von Microsoft Deutschland eine Videoserie zum Thema “MongoDB auf Windows Azure” aufgenommen. Das ganze hat sich in vier Videos aufgeteilt:

Bereits ein Jahr davor habe ich auf TechNet einen Artikel veröffentlicht, wie man mit MongoDB auf Windows starten kann.

Warum komme ich immer wieder auf das Thema MongoDB zurück? MongoDB entwickelt sich immer weiter, bietet immer mehr Möglichkeiten und die Verbreitung nimmt immer mehr zu. In der heutigen Zeit, wo die Größe von Datensätzen immer stärker zunimmt, stoßen relationale Datenbanken immer mehr an ihre Grenzen. Natürlich kann man mit ihnen auch auf einem SQL Server arbeiten, aber NoSQL-Datenbanken bieten hier meistens mehr Komfort und verhindern eine Menge Overhead und Kopfschmerzen. Auch im Zusammenhang mit Cloud Computing gewinnen NoSQL-Lösungen immer noch an Bedeutung.

Insbesondere die Verbreitung von MongoDB lässt sich sehr einfach auf Windows Azure nachvollziehen. Vor zwei Jahren war es schwer möglich MongoDB auf Azure zum Laufen zu bringen. Letztes Jahr war ich noch auf die Windows Azure Virtual Machines beschränkt. Heute möchte ich den aktuellen Stand und die Möglichkeiten eines MongoDB-Deployments auf Windows Azure kurz vorstellen. Aber bevor wir starten ein kurzer Refresher…

Was ist MongoDB?

Ursprünglich von 10gen entwickelt nennt sich die Firma hinter MongoDB mittlerweile MongoDB, Inc. Sie beschreibt MongoDB wie folgt

MongoDB is an open-source database used by companies of all sizes, across all industries and for a wide variety of applications. It is an agile database that allows schemas to change quickly as applications evolve, while still providing the functionality developers expect from traditional databases, such as secondary indexes, a full query language and strict consistency.

In den verschiedenen Varianten von NoSQL-Datenbanken reiht sich MongoDB im Bereich der Dokumenten-orientierten Datenbanken ein. Wie der Name schon sagt werden bei diesen Datenbanken Daten in Dokumenten gespeichert. Bei MongoDB werden diese im sogenannten Binary JSON (BSON) Format abgespeichert. Für Entwickler bedeutet dies, dass Daten sehr einfach in JSON abgelegt werden. Muss man sich als Entwickler mit komplizierten APIs rumschlagen und das JSON selber zusammenbauen? An diesem Punkt zeigt MongoDB eine seine Stärken. Es gibt 13 supportete Driver und 37 von der Community entwickelte Driver. Diese Driver sind die Schnittstelle um mit MongoDB aus den verschiedensten Programmiersprachen heraus zu arbeiten, was im NoSQL-Bereich so nicht üblich ist. .NET-Entwickler können sich über eine sehr gute API, aber auch eine gute Dokumentation freuen.

Auf welchen Betriebssystemen kann man mit MongoDB arbeiten? Viele Entwickler werden überrascht sein, dass man MongoDB sehr einfach unter Windows zum Laufen bekommt. Das natürliche Umfeld für MongoDB ist aber Linux. Microsoft selber nutzt in Großteilen der Dokumentation zu Windows Azure CentOS als Grundlage, aber man ist hier ziemlich frei in der Auswahl.

Wie kann ich MongoDB auf Windows Azure nutzen?

Es gibt vom Prinzip her zwei Varianten, wie man MongoDB auf Windows Azure betreiben kann: Die Windows Azure Virtual Machines und den Windows Azure Store. Diese beiden wiederum teilen sich in mehrere Lösungen auf. Beginnen wir mit den Windows Azure Virtual Machines.

Man kann MongoDB selber auf einer Linux VM in Windows Azure aufsetzen. Einen Ansatz dafür habe ich letztes Jahr in meiner Video-Serie gezeigt. Einfacher ist es aber, das beim letzten Mal vorgestellte VM Depot von Microsoft Open Technologies zu nutzen. Hier findet man zwei vorbereitete VMs für MongoDB

  1. Den MEAN Stack auf Ubuntu von BitNami. Diese VM beinhaltet MongoDB, Express, Angular, Node.js, Git, PHP und MongoRock
  2. MongoDB v2.2.3 von Cognosys

VM Depot

Um diese VMs zu nutzen geht man genauso vor wie ich es beim letzten Mal beschrieben habe. Im Management Portal von Windows Azure sucht man sich die entsprechende VM raus, läd sie herunter, registriert sie und letzendlich startet man sie.

Es gibt aber noch eine zweite Möglichkeit, den sogenannten Windows Azure Store. Dieser enthält mehrere Services, die in Azure genutzt werden können. Neben MongoDB gehören ClearDB MySQL, New Relic und SendGrid zu den bekanntesten Add-Ons. Wie kann man den Windows Azure Store aus dem Management Portal heraus nutzen? Wie in Azure üblich wählt man New und dann Store aus.

New Add-On

Interessant für uns sind hier zwei Add-Ons: MongoDB – Preview und MongoLab.

Store

Die MongoDB – Preview wird von MongoDB, Inc. selbst bereitgestellt und bietet zurzeit nur eingeschränkte Möglichkeiten. Um sie nutzen zu können ist eine Einladung nötig. Weiterhin ist ein Deployment nur in das West US Rechenzentrum möglich.
MongoLab gibt es schon länger auf Windows Azure und ist derzeit die bessere Lösung. Mit MongoLab ist neben Azure auch ein Deployment auf Amazon, Google, Joyent und Rackspace möglich. Ein großer Vorteil ist, dass man schnell eine Testdatenbank erstellen kann, da eine 500 MB Datenbank frei ist. Ein Nachteil ist, dass man nur in eins von zwei US Rechenzentren deployen kann. Insbesondere aus Europa muss hier mit höherem Traffic gerechnet werden. Neben dem Erstellen einer MongoDB-Instanz anhand von MongoLab aus dem Management Portal kann das Deployen auch über die Seite von MongoLab durchgeführt werden. Diese bietet im Anschluss gute Möglichkeiten für das Monitoring.

Zusammenfassung

Es ist nicht schwer MongoDB auf Azure zum Laufen zu bringen. Wie gezeigt hat man als Entwickler zwei primäre Möglichkeiten des Deployments

  1. Das Einrichten einer Instanz über die Windows Azure Virtual Machines.
  2. Das Einrichten einer Instanz über den Windows Azure Store anhand der MongoDB – Preview oder MongoLab.

Beide Varianten haben ihr Vor- und Nachteile. Wenn eine Testinstanz schnell zur Verfügung stehen muss oder der Administrationsaufwand minimiert werden soll, ist der Windows Azure Store die beste Alternative. Steht Skalierung und mehr Kontrolle über die einzelnen Instanzen oder das Cluster im Fokus stößt man bei MongoLab schnell an seine Grenzen. In diesem Fall bieten sich die Virtual Machines an.

Ein Wort der Warnung: Der Windows Azure Store befindet sich derzeit noch in einer Preview und ist nicht in jedem Land verfügbar. Dies wird sich aber mit hoher Wahrscheinlichkeit in den nächsten Monaten ändern.

– Jan (@Horizon_Net)