News combit Dev Blog

Zugriff auf Microsofts Cosmos DB

Veröffentlicht: Freitag, 1. Juni 2018 | 0 Kommentar(e)
 
Microsofts Cosmos DB ist ein cloudbasierter, skalierbarer Datenbankdienst, der sich seit seiner Einführung im Mai 2017 großer Beliebtheit erfreut und den ich schon immer mal ausprobieren wollte. Wenn ich schon mal dabei bin, verbinde ich natürlich auch gleich mein Lieblings-Reporting-Tool damit.

Ausgehend vom Azure-Portal unter portal.azure.com wird zunächst ein neues Cosmos DB-Konto angelegt:



Es gibt verschiedene APIs, die man für Cosmos DB verwenden kann. Wählen wir "SQL", da ich voll und ganz darauf vertraue, dass wir eine Verbindung zu MongoDB oder Cassandra über die entsprechenden Datenprovider herstellen können.




Sobald dieser Prozess abgeschlossen ist, fügen wir eine Sammlung hinzu:




Praktischerweise bietet Microsoft den Download einer automatisch generierten .NET-Beispielanwendung an, sobald die Sammlung erstellt wurde. Die Lösung heißt "To-Do" und hat - im Kern - ein Modell für die in der Sammlung enthaltenen Objekte:

public class Item
    {
        [JsonProperty(PropertyName = "id")]
        public string Id { get; set; }

        [JsonProperty(PropertyName = "name")]
        public string Name { get; set; }

        [JsonProperty(PropertyName = "description")]
        public string Description { get; set; }

        [JsonProperty(PropertyName = "isComplete")]
        public bool Completed { get; set; }
    }


Sobald die Anwendung läuft, erstellen wir ein paar neue To-Dos aus der Benutzeroberfläche:



Die Hauptansicht der mitgelieferten Beispielapplikation zeigt dann die To-Dos:



Auf der Server-Seite können wir diese Dokumente dann im Data Explorer von Azure einsehen:




Um eine Verbindung zu meiner Datenbank über "normales" SQL herzustellen, stehen die Endpunkt-URI und Schlüssel im Abschnitt "Keys" des Azure-Portals zur Verfügung - entweder nur zum Lesen, was in meinem Anwendungsfall ausreichend ist, oder für den R/W-Zugriff. Wir werden die beiden gleich noch brauchen.



Zurück auf der Client-Seite erstelle ich eine WPF-Anwendung, da mir die Wiederverwendung der bestehenden To-Do-Anwendung viel zu einfach erscheint - da ist der ganze Datenzugriff schon fertig verdrahtet.
Glücklicherweise liefert Microsoft ein NuGet-Paket aus, das referenziert werden kann, um auf Cosmos DB SQL-Daten zuzugreifen:



Dieses Paket fügen wir dem Projekt hinzu. Wenn alles soweit passt, einfach einige Namespaces zur "uses"-Klausel hinzufügen und einen neuen DocumentClient einrichten, um auf die Daten zuzugreifen:

private const string endpointUrl = "…";
        private const string primaryKey = “…”;
        private DocumentClient client;

        private void button_Click(object sender, RoutedEventArgs e)
        {
            client = new DocumentClient(new Uri(endpointUrl), primaryKey);
            IQueryable<Item> itemQuery = this.client.CreateDocumentQuery<Item>(
                    UriFactory.CreateDocumentCollectionUri("ToDoList", "Items"),
                    "SELECT * FROM Items");
        }


Der Rest ist ein Kinderspiel: Wir verbinden List & Label mit der Artikelabfrage und rufen den Designer auf:

using (ListLabel LL = new ListLabel())
            {
                LL.DataSource = itemQuery;
                LL.Design();
            }


Anschließend die Artikelfelder suchen und schnell per Drag & Drop einen Bericht erstellen:



Das alles ist in weniger als 30 Minuten erledigt, inklusive Einrichtung - super Sache! So was nennen wir intern "Freitagnachmittagsprojekte". TGIF!




Autor: Jochen Bartlau
Entwicklungsleiter List & Label

Jochen Bartlau leitet als Geschäftsführer die Softwareentwicklung bei combit. Microsoft .NET und Agiles Projektmanagement sind zwei seiner Steckenpferde. Der technikbegeisterte Physiker verbringt seine Freizeit am liebsten mit seiner Familie.


  


Kommentare


Aktuell gibt es noch keine Kommentare zu diesem Blogbeitrag.

Ergänzen Sie hier Ihren Kommentar
 
 
 
 
 

Lassen Sie sich über neue Kommentare zu diesem Blogbeitrag informieren


 
RSS
combit Dev BlogRSS
combit Entwicklerblog
Hier teilen wir Informationen über die Entwicklung unserer Softwareprodukte. Außerdem: Allgemeines über die Softwareindustrie.
Archiv
November 2018 (2)
Oktober 2018 (4)
September 2018 (4)
August 2018 (2)
Juli 2018 (2)
Juni 2018 (2)
Mai 2018 (1)
April 2018 (1)
März 2018 (1)
Februar 2018 (2)
Januar 2018 (1)
Dezember 2017 (1)
November 2017 (2)
Oktober 2017 (3)
September 2017 (3)
August 2017 (2)
Juli 2017 (2)
Juni 2017 (1)
Mai 2017 (2)
April 2017 (1)
März 2017 (1)
Ältere Blogposts
Einträge aus dem Zeitraum von März 2014 bis Februar 2017 finden Sie in unserem englischsprachigen Blog.
+49 (0) 7531 90 60 10