Posts mit dem Label Cloud werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Cloud werden angezeigt. Alle Posts anzeigen

Mittwoch, 16. April 2025

Digitale Produkte - Europäische Alternativen

Die nachfolgende Linksammlung hilft dabei, sich digital unabhängig von Donald Trump und den Big Tech Giganten bzw. den Big Five (Alphabet (Google), Amazon, Apple, Meta Platforms (ehem. Facebook) und Microsoft) zu machen.




Sonntag, 27. August 2023

Datenbank - CSV-Dateien mit SQL abfragen (SQL connect to CSV Data)

Mein letzter Beitrag zum Thema CSV ist schon etwas länger her (SQLite - Import CSV File - existing or new table) ;-) . Es gibt mehrere Möglichkeiten CSV-Dateien "wie eine Datenbank" zu verwenden, wie z.B. CsvJdbc, DuckDB und WhatTheDuck.


CsvJdbc (schreibgeschützter JDBC-Treiber)

CsvJdbc ist ein schreibgeschützter JDBC-Treiber. CSV-Dateien (Comma Separated Value) können als Datenbanktabellen verwendet werden. Es eignet sich zum Schreiben von Datenimportprogrammen oder zum Analysieren der Dateien.
Eine Verbindung zu den CSV-Daten kann zum Beispiel mit dem Squirrel SQL Client erfolgen (siehe auch https://www.cdata.com/kb/tech/csv-jdbc-squirrel-sql.rst).

DuckDB Datenbank-Engine bzw. WhatTheDuck

DuckDB bzw. WhatTheDuck eignet sich für die Verarbeitung und Speicherung von tabellarischen Datensätzen aus CSV-Dateien. So lassen sich CSV-Dateien mit SQL-Abfragen bearbeiten um eine interaktive Datenanalyse oder gleichzeitige große Änderungen an mehreren Tabellen durchzuführen.

Dank WhatTheDuck kann man dies direkt im Browser durchführen und die Abfragen der SQL-Statements lassen sich anschließend wieder im CSV-Format herunterladen.


 

Dienstag, 25. Oktober 2022

Cloud - Lokale Webdienste mit Hilfe von ngrok Tunnel sicher ins Netz bringen

Mit Hilfe von Cloud Diensten, wie z.B. ngrok Tunnel lassen sich lokale Webdienste sicher ins Netz bringen. Hierfür genügen bereits drei Zeilen in der Konsole. Dies geschieht ohne öffentliche IP-Adresse, ohne VPN oder offene Ports in Ihrer Firewall.


1. Regestrierung unter https://dashboard.ngrok.com/signup 

Anschließend hat man direkt Zugriff auf sein persönliches Dashboard inkl. einer kurzen Installationsanleitung. 


2. Jetzt nur noch ngrok herunterladen und das Archiv entpacken.

wget --no-check-certificate https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-arm.tgz

tar xfvz ngrok-v3-stable-linux-arm.tgz

Hinweis: Mit Hilfe von getconf LONG_BIT findet man heraus, welche Version von Linux installiert hat (32-Bit oder &4-Bit) ist.

3. ngrok-Agent registrieren

Jetzt muss nur noch der folgende Befehl ausgeführt werden, damit der ngrok-Agent registriert wird. Anschließend kann eine Tunnelverbindung hergestellt werden.

./ngrok config add-authtoken ID

Als nächstes kann mit "./ngrok http 80" eine HTTP-Tunnelweiterleitung am lokalen Port 80 gestartet werden.

Nun kann ich z.B. direkt mit seinem Smartphone auf den Raspberry Pi im lokalen Netz zugreifen! Es war keine Firewallfreischaltung, Portweiterleitung oder DynDNS hierfür notwendig.

Eine weitere alternative wäre z.B. CloudFlare Tunnel https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup oder Siehe auch "GitHub Repository: Awesome Tunneling" .


Samstag, 12. März 2022

Datenbank - Universally Unique Identifier (UUID) als Primärschlüssel anstatt Integer verwenden

Die Verwendung von Tabellen, Spalten, Primärschlüsseln und Sekundärschlüsseln sind die Grundlagen für den Aufbau eines Datenbanksystems. Um die Datensätzen für Verarbeitung-, Zugriffs- und Speicherungszwecken nutzen zu können, werden in der Regel Tabellen  mit einer ID als Primärschlüssel und Sekundärschlüssel angelegt. Als Datenformat verwendet man meistens ein 32-Bit-Integer und aktiviert das automatische Inkrementieren für die ID mit jeder neu angelegten Zeile. Die Verwendung eines 32-Bit-Integer kann aber in bestimmten Situationen zu Problemen führen, welche sich mit Hilfe von einer anderen universell eindeutigen Kennung (UUID) umgehen lässt.

Anhand dem folgenden Beispiel der Tabelle "Raumtechnik", vergibt die Datenbank immer automatisch eine freie ID.

CREATE TABLE Raumtechnik (Id INT NOT NULL AUTO_INCREMENT, Typ VARCHAR(255) NOT NULL, Beschreibung VARCHAR(255), PRIMARY KEY (Id));

Beispiel für ein logisches Datenbankkonzept.

Integer (UNSIGNED INT / BIGINT)

Eine Möglichkeit der Optimierung wäre hier einen vorzeichenlosen Integer (UNSIGNED INT) zu verwenden. Siehe auch "Im Dezember 2014 übertraf die Aufrufzahl von Psys Video „Gangnam Style“ auf YouTube das 32-Bit-Integer-Limit von 2 147 483 647."

Id UNSIGNED INT NOT NULL AUTO INCREMENT,

So lässt sich der Zahlenraum für IDs verdoppeln von 0 bis 4 294 967 295. Für sehr große Projekte sollte daher der 64-Bit-Integer UNSIGNED BIGINT verwendet werden. Aufpassen sollte man hier aber bei Web Applikationen (JSON Format), denn JavaScript-Engines der Browser haben hier irgendwann Probleme.

Probleme von Auto-Increments

Auto-Increments können bei der Verwendung von Datenbank Clustern ggf. ein Problem werden. Denn hier erhält jeder Node einen Schreibauftrag. Damit sie sich nicht bei jedem Insert auf die nächste ID einigen müssen erhöhen die Nodes die ID nicht um +1, es wird um die Anzahl der Nodes im Cluster erhöht.

Verwendet man in seiner Applikation Import- und Export-Funktionen, kann dies in einer relationalen Datenbank (über Schlüssel mit anderen Tabellen verknüpft) beim Importieren von Datensätze aus einer anderen Datenbank zu Problemen führen. So können Einträge bereits existieren und IDs sich doppeln, die Einträge müssten somit neue IDs bekommen und in allen anderen relevanten Tabellen müssen die Fremdschlüssel aktualisiert werden. Je nach dem wie groß der Import ist, kann es hier zu sehr großen verketteten Abhängigkeiten kommen.

Verwendet man IDs in seiner WebAPI (uni.org/klausurergebnis/123), kann dies schnell zum Sicherheitsproblem innerhalb der Anwendung führen. So lassen sich IDs sehr einfach erraten und ggf. fremde Ergebnisse abrufen.
 

UUIDs Universally Unique Identifier

UUIDs können in einer Datenbank als Alternative zum Integer verwendet werden und können die oben beschriebenen Probleme beim Importieren von Daten und Zusammenführen der Datensätze verhindern.

Die UUID (Request for Comments 4122) besteht aus einer 16-Byte-Zahl, ist hexadezimal notiert und in fünf Gruppen unterteilt:

550e8400-e29b-11d4-a716-446655440000

Microsoft nennt dieses Verfahren anders, nämlich GUID (Globally Unique Identifier).

Erzeugen lassen sich die UUIDs unter PostgreSQL mit Hilfe von gen_random_uuid () und bei Microsoft SQL Servern verwendet man beim Anlegen der Tabelle den UNIQUE IDENTIFIER.

CREATE TABLE Raumtechnik (unique_id UUID DEFAULT gen_random_uuid (), Typ VARCHAR(255) NOT NULL, Beschreibung VARCHAR(255), PRIMARY KEY (unique_id));

Zukünftige Konflikte sollten mit der Verwendung von UUIDs so gut wie ausgeschlossen sein, denn eine UUID ist einzigartig und kann nur einmal vergeben werden.

Montag, 1. November 2021

Cloud - Open-Source Software im Cloudumfeld

Nach der Vorstellung von "Cloud - Basics (Konzepte, Werkzeuge und Methoden)" gehe ich kurz auf die Open-Source Software im Cloudumfeld ein. Siehe auch CNCF Cloud Native Interactive Landscape.


Docker

  • Freie Software der Firma Docker Inc. zur Containervirtualisierung.

Ansible und Terraform

  • Mit Ansible werden die "Rezepte" erstellt, um Cloud Server bestellen und konfigurieren zu können und fungiert als Admin Kommandozeilenwerkzeug. Terraform eignet sich für die Bestellung der Cloud Server bei den Anbietern.


Git, GitHub und GitLab

  • Git ist eine Software zur Versionsverwaltung von Dateien, es lassen sich dabei verschiedene Entwicklungspfade zu verfolgen und so können mehrere Entwickler parallel entwickeln. Siehe auch Agile Softwareentwicklung - GitHub Flow notwendig?.
  • GitHub ist einer der weltweit am bekanntesten Hoster für Git-Repositories inklusive Continuous Integration (CI) / Continuous Delivery (CD) Lösungen.
  • GitLab ist eine Webanwendung zur Versionsverwaltung für Softwareprojekte auf Git-Basis, welche man selber hosten kann.

Kubernetes (k8s)

  • Automatisiert den Betrieb von Container, sprich Kubernetes verwaltet somit die Cluster von Servern, die wiederum Container ausführen.

OpenStack

  • Ist der "Baukasten" für Cloudserver und soll Unternehmen dabei unterstützen den Aufbau eigener Clouds zu erleichtern um die eigene digitale Souveränität zu gewährleisten.

S3 (Simple Storage Service)

  • S3 wurde von Amazon entwickelt und kann man als Blockspeicherplatz-Angebot beschreiben. Dateien werden in Buckets (Ordner ohne Verschachtelung) abgelegt. Der Zugriff erfolgt über HTTP / HTTPS. Es ist sehr gut skalierbar und somit wird es gerade von Dropbox oder auch Netflix zum Ablegen von Dateien aller Art verwendet.

Cloud Native Computing Foundation (CNCF)

 

Montag, 25. Oktober 2021

Cloud - Basics (Konzepte, Werkzeuge und Methoden)

Nach meinem Artikel "Cloud - Pizza as a Service: Was hat eigentlich "Pizza" mit Cloud Services zu tun?" gehe ich in diesem Beitrag auf die "Cloud Basics" ein. Hierbei handelt es sich um Werkzeuge und Methoden, welche vor einer möglichen Umsetzung / Einführung / Migration unbedingt bekannt sein sollten.



CI/CD (Continuous Integration/Continuous Delivery)

Release early, release often - Mit Hilfe der CI/CD-Pipelines, welche in einem agilen Softwareprojekt zwingend erforderlich sind, welche den Prozess des fortlaufenden Zusammenfügens von Komponenten hin zu einer Anwendung garantieren, müssen Änderungen am Quellcode bzw. neue Funktionen nicht mehr bis zum nächsten großen Release gesammelt werden. Siehe auch "Agile Softwareentwicklung - GitHub Flow notwendig?".

Änderungen am Quellcode, die in der Versionsverwaltung eingecheckt werden, können sofort automatisch von Skripten getestet (siehe auch Softwaretest bei agiler Entwicklung durch Testautomatisierung) und zu einem auslieferungsfähigen Paket verpackt werden.

Die Tools der Wahl sind hier zum Beispiel Jenkins (build, test, and deploy their software) oder GitHub Actions, GitLab (end-to-end software development platform with built-in version control, issue tracking, code review), Maven (build automation tool used primarily for Java projects) und Nexus (software repository manager).

Cloud-Native

Entwickler bezeichnen Software als Cloud-Native, welche die Vorteile der Cloud im eigenen Rechenzentrum (Flexibilität, Skalierbarkeit und Reproduzierbarkeit) bieten. Die Software ist daher in der Regel für den Betrieb in Containern (Raspberry Pi - Docker installieren) optimiert und kann somit auf eigenen oder auf gemieteten Servern laufen.

Container

Hier erfolgt eine Isolierung von Anwendungen mit Hilfe von Containervirtualisierung (siehe z.B. Raspberry Pi - Docker Compose installieren). Sie nutzen den Kernel des darunterliegenden Betriebssystems und blockieren somit keinen Arbeitsspeicher und haben nur eine sehr geringe Bootzeit. Alle Abhängigkeiten sind enthalten, dadurch lassen sich Container schnell starten, vervielfältigen, auf anderen Servern oder auch ganze Rechenzentren übertragen.

DevOps

Die Entwickler und der Betrieb / Service einer Software (Development und Operations) werden bei diesem Modell nicht hart getrennt, sondern arbeiten eng miteinander zusammen. Flexible Mietserver und Konzepte aus dem Cloudumfeld (zum Beispiel CI/CD) unterstützen dabei, die DevOps Methoden umzusetzen.

Hybrid 

In der Regel wird nicht die komplette Serverinfrastruktur eines vorhandenen Rechenzentrums durch Cloud-Infrastruktur ersetzt. Dies ist vor allem der Fall, wenn es um besonders sensible Daten geht. Die lokale Software sollte aber idealerweise "Cloud-Native" sein, damit Hybride Strategien gut funktionieren. Die restliche Software kann dann in der flexiblen Public Cloud betrieben werden.

laaS (Infrastructure as a Service)


Hierbei handelt es sich eigentlich um Marketing Kreation der Cloud Anbieter. Hierbei kann man Angebote oder Dienste zum Minutenpreis mieten, oft auch Platform as a Service (PaaS) genannt. 


Infrastructure as Code


Die Infrastruktur lässt sich immer wieder neu einrichten. Die jeweils gewünschte Konfiguration wird z.B. in Dateien mit YAML-Format beschrieben. Mit Hilfe von Terraform oder Ansible erfolgt dann die Umsetzung im Cloud-Umfeld.


Public Cloud & Private Cloud


Siehe hierzu auch "Hybrid" Beschreibung oben, Public Cloud sind Angebote für flexibel abgerechnete Server und weitere Dienstleistungen. Private Cloud sind eigene physische Server, welche zum Beispiel mit der Software Open Stack verwaltet werden.
Unternehmen, die idealerweise mit cloud-nativen Tools arbeiten, haben sie die Möglichkeit ihre Dienste jederzeit aus der "Private Cloud" in eine "Pubilc Cloud" zu migrieren.
 


Semantic Versioning


Es handelt sich um eine Standardisierung der Software-Versionierung. Sie besteht aus drei Zahlen (1.3.08) besteht: Die major version (1), minor version (3) und patch version (08). Siehe auch https://semver.org/lang/de/.


SaaS (Software as a Service)


Analog zu IaaS, Software wird zum Monatspreis an Kunden vermietet. Man muss sich nicht um die Administration, Updates oder Backups der Software kümmern. In der Regel laufen die Anwendungen auf Cloud-Infrastruktur wie zum Beispiel Amazon (aws).


Vendor Lock-in


Beschreibt die Befürchtung, dass man mit der Entscheidung für eine Software oder Service im Dienstleisteruniversum eingesperrt ist. Dies kann man mit der Verwendung von Open-Source-Software aus dem Cloud-Native-Umfeld umgehen. Als Beispiel ist hier Kubernetes als Plattform für seine Container und eigenen Betrieb von Open-Source-Software selbst genannt.

Donnerstag, 4. Juni 2020

Cloud - Pizza as a Service

Was hat eigentlich "Pizza" mit Cloud Services zu tun?

 
Das Pizza Modell von Albert Barron (veröffentlicht in 2014 auf Linkedin) beschreibt anhand von "Wie möchte ich eine Pizza essen?" die unterschiedlichen Cloudvarianten.
  • Pizza selbst machen
  • Tiefkühlpizza in den Ofen schieben
  • beim Lieferdienst bestellen,
  • ins Restaurant gehen

Die Entscheidung für ein Servicemodell ist dabei abhängig von,
  • wie viel man selbst erledigen kann und will,
  • wie viel Zeit man hat,
  • wie viel man vom Kochen versteht
  • oder welche Zutaten ­man gerade zur Verfügung hat.


Quelle: Albert Barron (https://www.linkedin.com/pulse/20140730172610-9679881-pizza-as-a-service)

Sonntag, 19. April 2015

Direkter URL Zugriff auf Google Drive Dateien

Möchte man einen direkten öffentlichen Zugriff auf Dateien in seinem GoogleDrive um z.B. Inhalte aus einem .txt File auszulesen, gibt es folgende Möglichkeit:
  • Rechts-Klick auf die gewünschte Datei und Share auswählen
  • Danach im folgenden Dialog den Link Get shareable link anklicken

Der generierte Link https://drive.google.com/file/d/0ByVthb1EejQ5OEtqYWdITGp5QjA/view?usp=sharing muss dann zu dem nachfolgenden umgebaut werden:
  • https://drive.google.com/uc?id=0ByVthb1EejQ5OEtqYWdITGp5QjA&export=download
Aufbau: https://drive.google.com/uc?id= XYZ &export=download

Jetzt kann man den Inhalt der .txt Datei z.B. eine URL direkt auslesen.

Bsp.:  new HttpAsyncTask().execute("https://drive.google.com/uc?id=0ByVthb1EejQ5OEtqYWdITGp5QjA&export=download");