Seite wählen

NETWAYS Blog

Neu im NETWAYS Trainings-Portfolio: PostgreSQL

Ihr liebt sie! Zweimal in Folge, 2017 und 2018, wurde PostgreSQL “DBMS of the Year” im DB-Engines Ranking. Na klar nehmen wir für all ihre Fans und solche, die es werden wollen, die freie, objektrelationale Datenbank PostgreSQL in unser Schulungs-Portfolio auf.

PostgreSQL steht für Zuverlässigkeit, Flexibilität und viele fortgeschrittene Features. Deswegen entwickelt es sich immer mehr zur Alternative zu anderen Open-Source-Datenbanken wie MySQL/MariaDB, aber auch den großen, kommerziellen Systemen.

Für einen stabilen, stressfreien Betrieb

Die Schulung „PostgreSQL Fundamentals“ richtet sich an Administratoren, die an einem stabilen, wartungsarmen Betrieb einer PostgreSQL-Datenbank interessiert sind. Fundamentals-Inhalte sind unter anderem Entwicklungs- und Release-Zyklus, Beschaffung und Installation, (G)UIs, grundlegende Konfiguration, Backup und Restore, Replikation und (Hoch)Verfügbarkeit und vieles weitere.

PostgreSQL als „Data Center“

Die Schulung „PostgreSQL Advanced“ richtet sich an Datenbank-Architekten und -Designer sowie Entwickler, aber auch DevOps, die ihre Kunden aus ebenjenen Bereichen beraten wollen. Advanced-Inhalte sind, grob skizziert, Performance, PostgreSQL als „Data Center“ und Programmierung und Design.

Im Schulungs-Paket enthalten sind wie immer umfangreiche Schulungsunterlagen, ein Notebook für die Dauer des Trainings, sowie unsere legendäre Rund-um-sorglos-Verpflegung mittags, abends und in allen Pausen.

 

TRAININGS DETAILS

PostgreSQL Schulung (Fundamentals): 4. Juni / 10. September / 19. November 2019

PostgreSQL Advanced: 6. August / 22. Oktober / 3. Dezember 2019

 

Weitere Informationen & Anmeldung
www.netways.de/trainings
training@netways.de

OSMC #Recap with Kempf & Kraus | Don’t miss this year!

2017 sprachen Tobias Kempf & Michael Kraus über „Hochautomatisierte Warenlogistik – Monitoring bei Europas größtem Handelsunternehmen“.

  • 11.460 Filialen in 25 Ländern mit 390.000 Mitarbeiter
  • Es gilt, die Kommunikation über alle Ebenen zu sichern
  • Es braucht neue Monitoring Definitionen

Mehr über die Zusammenarbeit der beiden Herren gibt’s hier:

YouTube player

 
Don’t miss OSMC 2018! Get your ticket now! Be a part of the Monitoring change.

OSMC | November 5 – 8, 2018 | Nuremberg

Postgresql: Neues vom Elefant

Postgresql bereichert die Welt von OpenSource Datenbanken schon seit langem, führte allerdings bisher eher ein Schattendasein und überließ MySQL das Feld – Allerdings völlig zu unrecht. Postgresql orientiert sich mehr am SQL Standard und fördert deutlich stärker die Kompatibilität mit anderen Systemen. Das ganze System fühlt sich auch mehr nach „echter“ Datenbank an, z.B. durch Namespaces, Sequenzen, Partitionierung oder die interne Verwaltung. Durch stärkere Kontrolle der Datenhaltung gewinnt man viel Performance und Transparenz bei der Entwicklung von Software oder den Betrieb von Plattformen auf Basis von Postgresql. Mir haben ein paar Sachen besonders gut gefallen die ich gerne Vorstellen würden:

Table Inheritance

Postgresql unterstützt Vererbungen. Damit ist es Möglich Objektrelationen aus der Softwareentwicklung auf die Datenbank zu übertragen ohne sich verbiegen zu müssen. Die Vererbung kann auch zur Partitionierung benutzt werden da die Attributwerte des ganzen Datensatz in den jeweiligen Tabellen landen.

create sequence universal_seq;
CREATE TABLE Base(
  oid INT8 PRIMARY KEY DEFAULT nextval('universal_seq'),
  name varchar(100) NOT NULL CHECK (name <> '')
);
CREATE TABLE asset(
  vendor VARCHAR(100),
  assetid uuid NOT NULL DEFAULT uuid_generate_v4()
) inherits (base);
create table server(
  description varchar(255),
  ipaddress cidr
) inherits(asset);

Arrays

Will man ein paar Werte in einem Feld abspeichern und nicht gleich eine abhängige Relation durch Fremdschlüssel anlegen eigenen sich simple Arrays. Die Arrays werden in der Datenbank als native Datentypen behandelt.

create table rezepte(
  id SERIAL,
  titel varchar(100),
  tags VARCHAR(100)[]
);
insert into rezepte(titel, tags) VALUES('Spinatauflauf', '{"spinat", "vegetarisch", "feta"}');
insert into rezepte(titel, tags) VALUES('Spaghetti bolognese', '{"tomaten", "hackfleisch"}');
insert into rezepte(titel, tags) VALUES('Spanakopita', '{"spinat", "vegetarisch", "feta"}');
insert into rezepte(titel, tags) VALUES('Gyros', '{"tzatziki", "knoblauch"}');
select * from rezepte WHERE 'spinat'=ANY(tags);

HSTORES

Hier prallen eigentlich zwei Welten aufeinander: Relationale Datenbanken und NOSQL. HSTORES ist ein Datentyp welcher ein Dictionary enthält. Interessant ist auch hier das es sich um einen ‚internen‘ Typ handelt der speziell indiziert werden kann.

create table attributes(uid SERIAL, dict HSTORE);
create table attributes(uid SERIAL, dict HSTORE);
insert into attributes(dict) VALUES('"f"=>"Eduart", "l"=>"Zimmermann"');
CREATE INDEX attr_dict_lastname
ON attributes
((attributes.dict -> 'l'));
select dict -> 'f' as firstname from attributes where dict -> 'l' = 'Zimmermann';

Zugegeben, es ist nicht wirklich alles neu aber es lohnt sich ein Blick über den See. Wer ungebunden ist und die Möglichkeit besitzt sich auf ein System festzulegen, kriegt mit Postgresql gleich eine komplette Fabrik zum Werkzeugkasten hinzu.

Marius Hein
Marius Hein
Head of IT Service Management

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert und viele Jahre in der Softwareentwicklung gearbeitet. Mittlerweile ist er Herr über die interne IT und als Leiter von ITSM zuständig für die technische Schnittmenge der Abteilungen der NETWAYS Gruppe. Wenn er nicht gerade IPv6 IPSec Tunnel bohrt, sitzt er daheim am Schlagzeug und treibt seine Nachbarn in den Wahnsinn.

Doctrine für PHP


Bei Datenbankverbindungen in PHP gehen die Meinungen der Entwickler schnell auseinander. Jeder verwendet die schnellste Lösung oder schreibt schnell eine Klasse welche die wichtigsten Funktionen übernimmt. Mittlerweile stehen dem Entwickler ja drei native Schnittstellen zur Verfügung: mysql, mysqli und PDO – wobei jede Vor- und Nachteile aufweist. Und es gibt eine Reihe von Abstraktionsschichten welche das Auslesen und Bearbeiten von Datensätzen erleichtern sollen wie z.B. ADODB, Creole/Jargon oder die Tools um MDB2 auf PEAR. Allerdings deckt keines dieser Werkzeuge den gesamten Bereich richtig ab. Schemadateien müssen von Hand erzeugt werden, Mapper von PHP Objekten sind umständlich zu konfigurieren, initialer Datenimport muss von Hand erledigt werden und komplizierte Abfrageteile werden dann doch wieder in SQL realisiert.
Seit 2006 wird an dem ORM Tool Doctrine geschraubt welches seit September in einer stabilen major release vorliegt. Doctrine orientiert sich an Hibernate aus der Javawelt und an den Active Record Pattern von Ruby on Rails. Das tolle ist: Man schreibt fast (!) keine einzige Zeile SQL mehr.
Die Relationen aus der Datenbank werden auf verschiedene Arten in PHP Objekte übersetzt. Man kann entweder gleich PHP Klassen schreiben (Aus denen dann später auch das Datenbankmodell erzeugt werden kann), lässt sich die Klassen aus einer bestehenden Datenbank erzeugen oder schreibt das Modell in einer deskriptiven, Doctrine eigenen Sprache welche auf YAML basiert. Es ist auch möglich verschiedene Datenbanken in einem logischen Modell zu Verbinden. Selbst solche Strukturen verhalten sich in PHP völlig transparent.
Doctrine an sich besteht aus einer Reihe von Objekten wie Connections, Tables, Collections, Records, Queries. Letztere können durch eine eigene, an SQL angelehnte Sprache, abgefragt werden (Anlehnung an HQL von Hibernate: DQL). Alle diese Objekte folgen speziefischen Entwurfsmustern wie Singletons, Prototypes oder EventListeners und können dadurch einfach erweiter werden.
Für kleinere Projekte schießt man damit sicherlich mit Kanonen auf Spatzen, auch benötigt man etwas Einarbeitszeit um den Baukasten zu verstehen. PHP geht damit aber insgesamt einen großen Schritt in Richtung Enterprisesoftware. Orientiert sich ein geplantes Projekt in diese Richtung ist Doctrine sicherlich nicht verkehrt und nimmt für die Zukunft eine Menge Arbeit ab: Cheatsheet von Doctrine.

Marius Hein
Marius Hein
Head of IT Service Management

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert und viele Jahre in der Softwareentwicklung gearbeitet. Mittlerweile ist er Herr über die interne IT und als Leiter von ITSM zuständig für die technische Schnittmenge der Abteilungen der NETWAYS Gruppe. Wenn er nicht gerade IPv6 IPSec Tunnel bohrt, sitzt er daheim am Schlagzeug und treibt seine Nachbarn in den Wahnsinn.

"MySQL Monitoring" in der Technical Review Ausgabe 09/08


Heute erscheint die neueste Ausgabe der Technical Review des Linux Magazins.
Die aktuellen Ausgabe widmet sich dem Thema „Datenbanken“. Im Mittelpunkt stehen diesmal alle Themenfelder, die im Zusammenhang mit der Bewältigung der immer weiter ansteigenden Datenmengen der heutigen Zeit von Bedeutung sind, vom Entwurf über Planung und Administration bis hin zu Tuning, Troubleshooting und Security.
Bernd Erk hat hierzu einen Beitrag mit dem Thema „MySQL Monitoring“ verfasst. Sein Artikel bietet Hilfestellung bei der Interpretation der Datenflut, die durch den Einsatz verschiedenster Monitoringtools gewonnen werden kann. Sein Anliegen ist es, den Blick des DB-Administrators vom reinen Availability-Monitoring hin zu einem tieferen Einblick in die „Befindlichkeiten“ des Datenbank-Systemes zu erweitern. Interessant seien hierbei insbesondere die gelieferten Ergebnisse zur Datenverfügbarkeit, Compliance und dem Ressourcemanagement. Er beschreibt ausführlich welche Werkzeuge zu welchem Zweck sinnvoll einzusetzen sind und wie man die entsprechenden Ergebnisse richtig liest und bewertet.

Pamela Drescher
Pamela Drescher
Head of Marketing

Seit Dezember 2015 ist Pamela Anführerin des Marketing Teams. Mit ihrer stetig wachsenden Mannschaft arbeitet sie daran, NETWAYS nicht nur erfolgreicher, sondern auch immer schöner zu machen. Privat ist sie Dompteurin einer Horde von drei Kindern, zwei Pferden, drei Katzen und einem Hund. Für Langeweile bleibt also keine Zeit!