daten&bass

data needs bass.

#nosql

data with bas[s|e].

data
d&b expertise

Früher:
Software hatte (immer) das gleiche "Gehirn" für alle Datenarten ... (SQL) Tabellen.

Heute:
Diverse domain-spezifische Optionen jenseits von Tabellen ... einfache key-value, hierarchisch strukturierte document, hochgradig vernetzte graph oder big column stores.

domain driven data.
development
d&b expertise

Früher:
Verschiedene Programmiersprachen, Tools und Konfigurationen überall im RZ.

Heute:
Full-stack JavaScript: Von der Server V8 Engine bis hin zum Browser des Clients. Event-basierte asynchrone und funktionale Programmierung inklusive. JavaScript, ausgerechnet.

full-stack javascript.
deployment
d&b expertise

Früher:
Schwergewichtige virtuelle Maschinen mit hunderten GB Daten und Stunden der Raterei.

Heute:
Leichtgewichtige Container mit schriftlichem Manifest zur Reproduktion. Keine Vervielfachung von OS und Lizenzen mehr. Orchestrierung out-of-the box. Build, ship, run.

immutable deploymnet.

blog

unsere neuesten blog beiträge (auf englisch)

Using and Accessing neo4j-graphql with NodeJS

Following a previous, more introductory blog post on Neo4j and two of their GraphQL projects this post shows how to use Neo4j with GraphQL based on neo4j-graphql. Besides the easy installation, configuration and schema introspection on the Neo4j side it will also show how to access this Neo4j GraphQL server from external clients, especially from NodeJS. >>

arne on graphql, nosql, neo4j, nodejs | 28 MARCH 2018

Data Modeling with Redis - German Postcodes Advanced

Following two previous blog posts about data modeling with Redis (Data Types Visualization and German Postcodes Geoposition) this post advances the German postcodes data model by adding the ability to scan not only by German postcodes ("Postleitzahlen", short PLZ, e.g. 45130) but also for city names (e.g. Essen) and by adding the ability to query for the distance between two postcodes. >>

arne on nosql, redis, nodejs | 28 FEBRUARY 2018

Installing Minikube on Mac OS in Virtualbox

As Kubernetes seems to have "won" the "battle" for container orchestration this post shows how to get up and running with Kubernetes locally via Minikube and Virtualbox on Mac OS. >>

arne on docker, dcos | 25 JANUARY 2018

Getting Started with Neo4j and GraphQL

Whereas GraphQL usually requires you to write resolvers for each operation Neo4j has started two projects on Github which provide "auto-translation" from GraphQL queries to Neo4j's Cypher queries and thus saves the effort to write custom resolvers. And on top there is only a single query to the database. >>

arne on graphql, nosql, neo4j, nodejs | 31 DECEMBER 2017

news
d&b blog

[P‑G‑A]

Postcode-Geopos-API:
NodeJS API basierend auf Swagger/openAPI zur Abfrage von Geopositionen in Redis gespeicherter deutscher Postleitzahlen (PLZ)

Use Case

Die Postcode-Geopos-API ermöglicht anhand deutscher Postleitzahlen einfache Abfragen nach:

  • deren Geoposition mit Längen- und Breitengrad
  • deren OSM-Info-Objekt mit weiteren Daten
  • allen Städtenamen in der gleichen PLZ Leitregion (z.B. 45)
  • der Distanz zwischen zwei Postleitzahlenregionen
Es lassen sich damit z.B. in HTML Drop-Down Select Listen asynchron mit Optionen befüllen (z.B. nach Eingabe der ersten beiden Ziffern, sog. PLZ Leitregion) und dann Folgeanfragen für den ausgewählten PLZ-Bereich abwickeln - sei es mit [P‑G‑A] selbst oder anderen APIs.

Beispiel

Geoposition 45130:
["7.00937658548355103", "51.43758188556734012"]

OSM-Info-Objekt 45130:
{"osm_id":"2073330", "type":"postcode", "lon":"7.00937729260588", "boundingbox": ...}

Städtenamen 45:
["45127 Essen Stadtkern", "45128 Essen Südviertel", "45130 Essen Rüttenscheid", ...]

Distanz 45130 40479 (km):
["27.6738","km"]


Testen

Anzahl Daten

Geopositionen: > 8.000

OSM-Info-Objekte: > 8.000

Städtenamen: > 12.500

Aktualisiert: 2017 - Q4

Implementierung

Stack: Redis als Datenbank mit einer NodeJS API basierend auf ExpressJS und Swagger-Node sowie Docker für das Deployment.

Status: Private Beta.

Zugang & Lizenzen:

Nutzung

Einer unserer Blog Posts erklärt die zugrundeliegenden Datenstrukturen in Redis und eine Beispielimplementierung client-seitig gibt es hier. Interessiert am Beta Testing? Wir freuen uns über eine Token-Anfrage.


API Docs
Postcode-Geopos-API
d&b apis

cypherMe

Cypher your passwords ... and get two-factor paper passwords

Idee

Die Idee geht zurück auf diesen Blog-Post von John Graham-Cumming: http://blog.jgc.org/2016/05/two-factor-paper-passwords.html

Hintergrund

Zwei-Faktoren Papierpasswörter können sicher aufgeschrieben und als Bausteine für einen off-line, nicht digitalen Passwort-Manager betrachtet werden.

cypherMe hilft beim (de)chiffrieren, aber ohne diese zu speichern.

Implementierung

Open source: Source code und Lizenz

Stack: Server-seitig NodeJS zur HTML-Generierung, zustandsloses client-seitiges Javascript für die Verschlüsselungen und Docker für das Deployment.

Verfügbare Verschlüsselungen: Caesar, Wortumkehrung, Wort- und Schreibungsumkehrung, Vigenère.

Passworttransformationen: Ausschließlich client-seitig (via Javascript im Browser).

Beispiel

Zu verschlüsselndes Passwort: !2MySitePw§9

Verschlüsselung: Wort- und Schreibungsumkehrung

Wiederholungen: 2

Das (verschlüsselte) Passwort: 9§WpETIsYm2!9§WpETIsYm2!

cypherMe
d&b apps

fliXnet

unsere node.js beispielimplementierung von neo4j's filmdatenbank mit openAPI (swagger)

Beispielimplementierung - Die bekannte Neo4j Filmdatenbank

Daten als Graph modellieren, speichern und abrufen.

HTML Web App und JSON API - Beide basierend auf NodeJS Express

Full-Stack JavaScript.

Automatisierte API Validierung and Dokumentation - durch OpenAPI (Swagger)

REST. SOA. Microservices. Oder wie auch immer man es nennen mag.


User Authentifizierung - Backend in Redis als Data Structure Store für Key-Value und Hash Map Daten

Für Sessions, Zugangsdaten und Nutzerkonten.

Basierend auf dem npm-Modul Passport und angepassten Swagger Security Handlern.

Abgesehen von D3JS - Reines JavaScript ohne Abhängigkeiten von anderen Frameworks

HTML Template-Erstellung server-seitig via Jade.

XHR für client-seitige Anfragen an die JSON API.

Nutzung von Material Design Lite Layouts und Komponenten

Optimiert für geräteübergreifende Nutzung.

Einfaches, verlässlich reproduzierbares Deployment - Basierend auf Docker

Container-basierte Infrastruktur.

fliXnet
d&b apps