Bei einer CPU bzw. einem Prozessor handelt es sich um das „Gehirn“ oder „Herzstück“ elektronischer Geräte. Eine CPU stellt einen unverzichtbaren und einen der wichtigsten Bestandteile aller elektronischer Geräte dar, die eine gewisse Rechenleistung erbringen müssen. Prozessoren kommen beispielsweise neben Computern auch in Smartphones, Tablet-PCs oder digitalen Kameras zum Einsatz. Ein Prozessor ist in der Lage, Milliarden von Rechenoperationen pro Sekunde auszuführen und wird nach seiner Performance und Architektur in unterschiedliche Klassen eingeteilt. Die bekanntesten CPU-Produzenten im Computer-Bereich sind AMD und Intel.

Welche Aufgaben übt eine CPU aus?

Die CPU ist eine der ersten Befehlsempfänger in einem elektronischen Gerät. Sie registriert, welche Aufgaben vom Anwender angefordert werden und leitet diese dann an die entsprechende Stelle bzw. die zuständige Komponente weiter. Der Hauptprozessor als zentrale Steuereinheit liest beispielsweise aus dem RAM-Speicher (Arbeitsspeicher) Daten aus und analysiert kontinuierlich alle Ein- und Ausgaben von Peripheriegeräten wie Tastatur, Maus oder Monitor. Darüber hinaus können einer Central Processing Unit explizit bestimmte Aufgaben zugeteilt werden. So können beispielsweise in einem Computerspiel bestimmte Inhalte nach Bedarf eingeblendet werden, die vom Programm angefordert werden. Die CPU oder die GPU (Grafikkarte) ist für die automatische Umsetzung dieser Inhalte zuständig.

Die Central Processing Unit hat folgende Aufgaben:

–       Rechenoperationen: Der Hauptprozessor ist für einen Großteil der Aufgaben in einem elektronischen Gerät zuständig. Wann immer Rechenoperationen vom Anwender oder einer Anwendung angefordert werden, kommt der Prozessor zum Einsatz.

–       Bus-Systeme: Die Datenübertragung in Bus-Systemen wird von der CPU gesteuert. Der Prozessor erkennt und analysiert die nacheinander eintreffenden Bits und setzt sie als kohärente Teile zusammen, um sie dann weiterzuverarbeiten. Alle Datenübertragungen über den Netzwerkadapter oder USB werden beispielsweise intern über die Central Processing Unit realisiert.

–       Kontrolle: Der Hauptprozessor kontrolliert, ob die ihm zugeteilten Aufgaben rechtzeitig erfüllt werden können und schlägt ansonsten Alarm. Dabei gleicht die Central Processing Unit kontinuierlich die laufenden Vorgänge mit Zielstandards ab. Diese Verhaltensweise kann in folgenden Szenarien beobachtet werden: Der Prozessor kann beispielsweise bei einem aktiven Download den Download-Fortschritt anzeigen. Darüber hinaus gibt die CPU Fehlermeldungen aus, wenn zum Beispiel ein Befehl nicht ausgeführt werden konnte.

Woraus setzt sich eine CPU zusammen?

Ein Hauptprozessor setzt sich u. a. aus folgenden Hauptbestandteilen zusammen:

–       Steuereinheit (Control Unit): Die Steuereinheit nimmt Anweisungen aus dem Arbeitsspeicher entgegen, decodiert diese und führt sie der Reihe nach aus. Die Control Unit koordiniert außerdem die Arbeit der übrigen Komponenten der CPU.

–       Arithmetik-Logikeinheiten (Arithmetic Logic Unit): Diese Komponente ist für die Ausführung arithmetischer und logischer Operationen anhand der Anweisungen der Steuereinheit zuständig.

–       CPU-Register: Diese Komponenten stellen den internen Hochgeschwindigkeits-Speicher dar, der für die temporäre Speicherung der zu verarbeitenden Daten zuständig ist.

–       Busse: Hierbei handelt es sich Hochgeschwindigkeits-Datenleitungen, welche die Übertragung von Daten und Anweisungen zwischen den einzelnen CPU-Komponenten ermöglichen.

Wie diese Komponenten in den einzelnen Prozessorkernen implementiert sind, hängt in erster Linie von der Prozessorarchitektur ab.

Die Arbeitsweise eines Hauptprozessors

Eine Central Processing Unit arbeitet schrittweise in regelmäßigen Taktzyklen folgende Aufgaben ab:

–       Anweisungen einholen (FETCH): In dem ersten Schritt holt der Prozessor aus dem Arbeitsspeicher die Anweisungen ein. Jede Anweisung in einem Programm kann bis zu einigen Millionen von CPU-Befehlen enthalten, die im Arbeitsspeicher an einer bestimmten Speicheradresse aufbewahrt werden. Die Central Processing Unit ist mit einem Programmzähler ausgestattet, der die Position des Prozessors im Programm verfolgt, also die Speicheradresse des Befehls, auf den die Central Processing Unit gerade zugreift.

–       Anweisungen entschlüsseln (DECODE): Zum Zeitpunkt, wenn der Prozessor die Programmanweisungen einholt, sind diese in der sogenannten „Assemblersprache“ codiert. Ein sogenannter „Assembler“ übersetzt die Anweisungen in eigene Maschinensprache der Central Processing Unit.

–       Anweisungen ausführen (EXECUTE): In diesem Schritt werden Aufgaben, wie zum Beispiel mathematische Kalkulationen, Abarbeitung von Daten oder Entscheidungen über die Abarbeitung weiterer Teile des Programms realisiert. Hier werden mathematische Aufgaben von der Control Unit an die Arithmetic Logic Unit delegiert.

–       Resultate ausgeben (WRITEBACK): Der Prozessor schreibt die Resultate in den Speicher.

Unterschiedliche CPU-Architekturen im Überblick

Die Befehlssatzarchitektur (Instruction Set Architecture) wird von der CPU-Architektur und dem eingesetzten Softwarecode bestimmt. Die Instruction Set Architecture bildet eine Schnittstelle zwischen dem Prozessor und der Software und übt eine äußerst wichtige Rolle aus. Mit der Befehlssatzarchitektur werden u. a. die unterstützen Prozessor-Anweisungen, die nativen Datentypen, die Speicherarchitektur sowie die externen Ein- und Ausgaben explizit beschreiben. Zu den wichtigsten Typen von Befehlssatzarchitekturen gehören:

–       RISC (Reduced Instruction Set Computing): Hierbei handelt es sich um eine Computing-Architektur, die auf einem reduzierten Befehlssatz basiert.

–       CISC (Complex Instructions Set Computing): Hierbei handelt es sich um eine Computing-Architektur, die auf einem komplexen Befehlssatz basiert.

–       Sparse-Matrix: Hierbei handelt es sich um einen neuartigen Befehlssatz für hochskalierbare CPU-Arrays, die in erster Linie in performanten Server-Systemen eingesetzt werden.

Die CISC-Architekturen zeichnen sich durch eine hohe Anzahl an spezialisierten Anweisungen aus, die möglichst viele Einsatzbereiche abdecken, während RISC-Architekturen einen anderen Ansatz verfolgen. Sie fokussieren sich auf Anweisungen, die besonders häufig aufgerufen werden und beschränken diese auf eine maximale Größe von 4 Bytes.

Relationale Datenbanken, anders als MongoDB, wurden jahrzehntelang als die einzige Lösung zur Archivierung und Verwaltung elektronischer Daten angesehen. Nicht ohne Grund handelt es sich bei dem im Jahr 1995 veröffentlichten Datenbanksystem MySQL auch heute noch um das beliebteste Datenbank-Managementsystem für viele Webanwendungen.

Das kontinuierlich steigende Volumen an Daten, mit dem moderne Webanwendungen konfrontiert werden, bedarf jedoch neuer Ansätze und Lösungen. Genau diese Probleme versuchen Datenbanken mit nichtrelationalem Ansatz zu lösen, die sich allmählich zu ernsthaften Konkurrenten des traditionellen Modells entwickeln. Diese verteilten Systeme, wie beispielsweise das im Jahr 2009 erschienene MongoDB, basieren auf dokumentorientierten Prinzipien und werden als NoSQL-Datenbanken bezeichnet (Not only SQL), da sie auf den Einsatz der traditionellen Abfragesprache SQL völlig verzichten. Obwohl dies zwar höhere Ansprüche an die Anwendungsschicht stellt, erlaubt es jedoch den Datenbestand und Arbeitsprozesse auf verschiedene virtuelle Server zu verteilen, sodass sich diese modernen Systeme fast unbegrenzt skalieren lassen.

MongoDB im Detail

Das US-amerikanische Unternehmen 10gen mit Hauptsitz in Palo Alto im US-amerikanischen Bundesstaat Kalifornien begann im Jahr 2007 mit der Entwicklung von MongoDB, einer dokumentorientierten NoSQL-Datenbank, die zwei Jahre später in der finalen Version der breiten Öffentlichkeit vorgestellt wurde. Die Open-Source-Datenbank entwickelte sich binnen kürzester Zeit zu der beliebtesten NoSQL-Datenbank. Das Unternehmen 10gen, das jetzt als MongoDB Inc. firmiert, ist weiterhin für die Entwicklung, Verwaltung und den Vertrieb kommerzieller Lösungen verantwortlich.

Die NoSQL-Datenbank MongoDB ist in der Programmiersprache C++ entwickelt und speichert Daten im binären JSON-Format „BSON“, das sich im hohen Maße am JSON-Format (JavaScript Object Notation) orientiert. Dadurch werden sämtliche JS-Datentypen unterstützt, weshalb MongoDB in erster Linie in NodeJS-Anwendungen eingesetzt wird. Eine MongoDB-Datenbank setzt sich aus einer oder mehreren Datensammlungen zusammen, die unterschiedliche Dokumente mit unendlich vielen und verschiedenen Datenfeldern verwalten.

In vielen Distributionen ist die Mongo Shell standardmäßig enthalten. Dabei handelt es sich um einen Client, mit dem sich der Zugriff via Kommandozeile realisieren lässt. Darüber hinaus lässt sich eine webbasierte Administrationsoberfläche aktivieren und direkt im Webbrowser aufrufen. Zusätzlich sind verschiedene Nutzeroberflächen erhältlich, wie beispielsweise:

–       MongoChef

–       MongoClient

–       RoboMongo

Mit diesen Tools können Sie die Daten grafisch anzeigen lassen und bearbeiten. MongoDB ist mit allen aktuellen Windows-, Linux- und MacOS-Systemen kompatibel.

Datenbankenmodelle im Vergleich: NoSQL vs. SQL

Anders als relationale Datenbanken verfolgt MongoDB einen dokumentorientierten Ansatz und geht dementsprechend ganz andere Wege bei der Speicherung der Daten. Die Grundstruktur weist jedoch gewisse Ähnlichkeiten auf:

–       Die Daten werden anstatt in Tabellen in Sammelmappen, den sogenannten „Collections“ gespeichert.

–       Die Spalten der SQL-Tabellen werden durch Zeilen ersetzt, die durch Dokumente im BSON-Format definiert werden.

–       Ein Feld setzt sich dabei immer aus einem Paar zusammen, und zwar einem Schlüssel, der den Namen des Feldes darstellt, und dem jeweiligen Wert.

Bei einem MongoDB-Dokument handelt es sich also um eine Sammlung von Schlüssel-Werte-Paaren. Der bedeutendste Unterschied zwischen NoSQL- und SQL-Systemen spiegelt sich jedoch in der Tatsache wider, dass MongoDB-Dokumente keinem festen Schema folgen. Dokumente in einer NoSQL-Datenbank haben ihre eigene einzigartige Struktur. Dadurch können jederzeit neue Felder mit neuen Werten hinzugefügt werden, was bei einer SQL-Datenbank wie MySQL undenkbar wäre und eine komplette Umstrukturierung des Systems erfordern würde.

Wo wird MongoDB eingesetzt?

Die hoch performante Datenbank ist immer dann eine gute Wahl, wenn Sie Webanwendungen realisieren möchten, die auf einer großen Menge unstrukturierter Daten basieren. Der dokumentbasierte Ansatz und die Tatsache, ohne an ein festes Schema gebunden zu sein, ermöglicht, dass unterschiedliche Datentypen schnell verarbeitet und gespeichert werden können. MongoDB kann außerdem nahezu unbegrenzt skaliert werden, da sich die Datenbank schnell und unkompliziert auf mehrere virtuelle Server verteilen lässt, ohne die Performance einzuschränken. Um die Verfügbarkeit und Sicherheit der gespeicherten Daten zu gewährleisten stellt MongoDB mehrere Mechanismen zur Verfügung.

Der Einsatz von MongoDB kann dementsprechend für alle Webanwendungen empfohlen werden, bei denen folgende Kriterien wichtig sind:

–       Flexibilität: Das Webprojekt soll jederzeit dynamisch modifiziert werden können.

–       Skalierbarkeit: Wenn die Anzahl Ihrer Nutzer steigt, wird auch dementsprechend die Zahl der Anfragen größer.

–       Verfügbarkeit: Die Webanwendung soll jederzeit in der Lage sein, Dienste Ihren Nutzern zur Verfügung zu stellen, selbst im Falle Serverausfalls.

In der Verteilung der Daten auf mehrere virtuelle Server besteht der wesentliche Unterschied zwischen MongoDB und relationalen Datenbanken: Nach der Speicherung der Daten bleibt ein kurzes Zeitfenster offen, in dem nachfolgende Lesezugriffe nur auf den alten Datenbestand zurückgreifen können. Dieses Konsistenzmodell wird als „Eventual Consistency“ bezeichnet.  Es stellt die Funktionalität zur Verfügung, das virtuelle Datenbanken-Server, die Teil eines größeren Datenbank-Clusters sind, Schreibzugriffe von Webanwendungen zulassen können, wenn sie vom Cluster getrennt sind.

Odoo ist eine Open Source ERP Lösung von einer starken Community und vielen zum Teil kostenfreien Zusatz-Apps. Odoo ist unter dem Namen OpenERP erstmals auf dem Markt veröffentlicht worden.

Was ist ein ERP?

ERP steht für Enterprise Resource Planning, auf Deutsch bedeutet es Ressourcenplanung für Unternehmen. Es handelt sich um eine für Unternehmen entwickelte Software mit umfangreichen Anwendungen für die Bündelung aller relevanten Vorgänge bzw. Prozesse.

Odoo als neue Version von OpenERP

OpenERP ist eine Softwarelösung mit dualem Lizenzmodell. Es handelt sich um eine Open-Source Software mit Unternehmen als Zielgruppe. Die Anwendungen der Software für Unternehmen sind breit gefächert: Website & E-Commerce, Finanzbuchhaltung (Fibu), CRM, Projektmanagement, Produktion, Abrechnung, Personalverwaltung und Dokumentenmanagement.

Es handelt sich um ein einziges und integriertes Tool, dass alle wesentlichen Funktionen für Unternehmen beinhalten soll. Auf diese Weise müssen keine unterschiedlichen Software verwendet bzw. integriert werden. Im Jahr 2014 wurde OpenERP in Odoo umbenannt.

Das Prinzip von ERP basiert auf der Verwendung von mehreren Datenbanken, die Verwaltung erfolgt dabei durch ein Datenbankmanagementsystem. Auf diese Weise liegt stets eine ständig aktualisierte Ansicht der wichtigsten Unternehmensprozesse vor.

Odoo mit umfassendem Paket

Es ist eine umfassendes Paket von Geschäftsanwendungen einschließlich Vertrieb, CRM, Projektmanagement, Lagerverwaltung, Fertigung, Finanzverwaltung und Personalwesen. Odoo/OpenERP bietet eine Auswahl von über tausend Modulen. Odoo/OpenERP ist in der Cloud oder vor Ort verfügbar und eignet sich am besten für kleine bis mittlere Unternehmen. Mit mehr als 1000 Downloads/Installationen pro Tag ist Odoo/OpenERP eine der meistgenutzten Open-Source-Lösungen der Welt. Es hat eine dynamische Community, ist flexibel und kann an individuelle Bedürfnisse angepasst werden.

Was spricht für Odoo?

Odoo bietet eine Fülle von Funktionalitäten mit über 1000 Modulen, die je nach den jeweiligen Geschäftsanforderungen eingesetzt werden können. Odoo/OpenERP wird von der Gemeinschaft aktiv entwickelt und unterstützt, und der Funktionalitätsstapel nimmt weiter zu. Es ist wichtig, ein ERP System zu finden, das über die benötigte Funktionalität verfügt. Einer der ersten Schritte bei jeder Implementierung ist die Analyse der Prozesse des Unternehmens.

Modularer Aufbau von Odoo

Das Programm ist in hohem Maße modular aufgebaut. Sie können Odoo/OpenERP mit einigen wenigen Modulen beginnen und später bei Bedarf weitere Module hinzufügen, wobei die Vorteile einer integrierten Lösung erhalten bleiben.

Aktualisierte Technologie

Odoo/OpenERP basiert auf einem Technologie-Stack, der modern und aktuell ist. Diese Technologien werden ständig weiterentwickelt und an die neuesten Paradigmen angepasst, so auch Odoo/OpenERP.

Niedrigere Gesamtbetriebskosten

Obwohl es klar ist, dass mehr Funktionalität und bessere Technologie die Kosten eines ERP-Systems oft ausgleichen, kann es schwierig sein, über die Anfangsinvestition hinaus zu sehen. Kosteneinsparungen in den folgenden Bereichen können die Ausgaben für ein neues ERP-System oft leicht rechtfertigen: Betriebskosten, Verwaltungskosten, Lagerhaltungskosten, veraltete Bestände und Wartungskosten. Andere greifbare Verbesserungen werden gewöhnlich in anderen Bereichen realisiert, wie z.B. Prozentsatz der fertigen und pünktlichen Lieferung, Reduzierung der Durchlaufzeit und des gesamten Produktionsausstoßes. Eine weitere Verbesserung bei einem integrierten System wie Odoo/OpenERP ist die Verfügbarkeit von On-Demand und aktuellen Berichten, deren Erstellung unter anderen Umständen Tage, Wochen oder Monate dauern könnte. Häufig machen Unternehmen den Fehler, ein ERP-System als Kostenstelle zu sehen und versäumen es, das Potenzial für diese Verbesserungen zu erkennen.

Strategie zur Konsolidierung

Odoo/OpenERP ermöglicht es Unternehmen, ihre Geschäftsprozesse einfach und effektiv zu vereinheitlichen. Mehrere Systeme stellen viele Herausforderungen dar, z. B. das Fehlen standardisierter Geschäftsprozesse im gesamten Unternehmen und die Konsistenz der Daten in den verschiedenen Systemen. Eine Situation wie diese erfordert eine Konsolidierungsstrategie.

Odoo ist anpassbar

Es ist nicht nur eine einfach zu bedienende Software, sondern auch sehr flexibel. Odoo/OpenERP kann an die spezifischen Geschäftsanforderungen des Unternehmens angepasst werden. In einer hochgradig wettbewerbsorientierten und sich schnell verändernden Welt müssen Unternehmen ständig innovativ sein, um mit den sich ändernden Geschäftsszenarien Schritt zu halten. Dies kann nur mit den richtigen Werkzeugen erreicht werden.

 

 

 

 

OpenERP ist eine Open-Source-Software für Unternehmen, die 2012 in Odoo umbenannt wurde. OpenERP wurde von Fabien Pinckaers gegründet. Die Anwendungen dieser Software umfassen ERP, Fibu, CRM, Projektmanagement, Produktion und auch Dokumentenmanagement. Im Prinzip soll die Software wie eine Branchenlösung alle wesentlichen Funktionen für kleine bis mittelständische Unternehmen beinhalten.

OpenERP hat Unternehmen als Zielgruppe

OpenERP ist eine Softwarelösung mit dualem Lizenzmodell. Es handelt sich um eine Open-Source Software mit Unternehmen als Zielgruppe. Die Anwendungen der Software für Unternehmen sind breit gefächert, unter anderem Website & E-Commerce, Finanzbuchhaltung (Fibu), CRM, Projektmanagement, Produktion, Abrechnung, Personalverwaltung und Dokumentenmanagement.

Es handelt sich um ein einziges und integriertes Tool, dass alle wesentlichen Funktionen für Unternehmen beinhalten soll. Auf diese Weise müssen keine unterschiedlichen Software verwendet bzw. integriert werden. Im Jahr 2014 wurde OpenERP in Odoo umbenannt.

TinyERP, OpenERB, Odoo – die Unternehmensgeschichte

Fabien Pinckaers gründete im Jahr 2005 das Softwereprodukt TinyERP. 2008 erfolgte die Umbenennung in OpenERP. Das Unternehmen entwickelte sich rasant und hatte 2010 bereits mehr als 100 Mitarbeiter. 2014 wurde OpenERP in Odoo umbenannt.

Was ist ein ERP?

ERP steht für Enterprise Resource Planning, auf Deutsch bedeutet es Ressourcenplanung für Unternehmen. Es handelt sich um eine für Unternehmen entwickelte Software mit umfangreichen Anwendungen für die Bündelung aller relevanten Vorgänge bzw. Prozesse.

Die Funktionsbereiche von Enterprise Resource Planning Systems

Das Prinzip von ERP basiert auf der Verwendung von mehreren Datenbanken, die Verwaltung erfolgt dabei durch ein Datenbankmanagementsystem. Auf diese Weise liegt stets eine ständig aktualisierte Ansicht der wichtigsten Unternehmensprozesse vor. Die folgenden Module sind typisch für ERP:

1)Finance Accounting

2)Management Accounting

3)Human Resources

4)Produktionsplanung

5)Auftragsabwicklung

Was ist CRM?

CRM ist eine Abkürzung für Customer Relationship Management, was im Deutschen Kundenbeziehungsmanagement bedeutet. Dieser Begriff schließt Verfahren und Technologien mit ein, bei denen die Unternehmen Daten in Bezug auf den Kunden analysieren und auch verwalten. CRM soll den Unternehmen dabei helfen, die Beziehungen zum Kunden zu verbessern und auch den Umsatz zu steigern.

Vorteile von CRM für Unternehmen

Es handelt sich bei CRM um eine Strategie. Durch diese Strategie erhält das Unternehmen mehr Informationen über die Verhaltensweisen und Bedürfnisse der Kunden. Wenn ein Unternehmen ein besseres und tiefgreifenderes Verständnis für seine Kunden aufbauen kann, dann kann es auch bessere und stärkere Bindungen zu ihm aufbauen. Es handelt sich im Prinzip um eine Philosophie, den Kunden zu helfen und zu unterstützen. Wenn der Kunde sich gut behandelt fühlt, dann kann er für weitere Geschäfte gehalten werden.

Durch CRM werden Informationen über das Kaufverhalten, der Vorlieben und Gewohnheiten der Kunden gewonnen. Es ist möglich, Kundenprofile für Einzelpersonen und auch Gruppen anzufertigen.

Was ist eine Fibu?

Fibu ist ein Kürzel für Finanzbuchhaltung. Die Finanzbuchhaltung ist ein Teilbereich des Rechnungswesens und umfasst die Bereiche:

-kaufmännische Buchhaltung

-Gewinn- und Verlustrechnung

-Abstimmungsbogen

-Lohnliste

Branchenlösung

Bei der Branchenlösung handelt es sich im Grunde um eine Software bzw. Softwarelösung. Diese Lösung ist immer auf eine individuelle Marktlücke mit ihren dazugehörigen Bedürfnissen abgestimmt.

DieseLösungen stellen für die jeweilige Branche eine Komplettlösung dar und gehen über ERP hinaus. Sie liefern einen kompletten Überblick:

-Finanzmanagement

-Produktmanagement

-CRM

Die Vor- und Nachteile von Branchenlösungen

Die Branchenlösung ist gut an die Bedürfnisse der jeweiligen Branche angepasst und dabei preiswerter als eine Individualsoftware. Die Software bündelt alle für die Branche üblichen Prozesse und Informationen und sie ist kurzfristig verfügbar. Viele Prozesse im Unternehmen können auf diese Weise effizienter und auch zeitsparender erledigt werden.

Ein Nachteil ist, dass die Unternehmen an eine Plattform gebunden sind. Gerade bei dem Vorhandensein mehrerer Branchen-Softwares kann es schnell unübersichtlich werden.

Wo kommen Branchenlösungen, wie OpenERP, zum Einsatz?

In den folgenden Feldern bzw. Zweigen kommen Branchenlösungen zum Einsatz:

-Automobilindustrie

-Bekleidung und Textilien

-Einzelhandel und Großhandel

-Kunststoffindustrie

-Konsumgüterindustrie

-Maschinenbau

Ob dynamische Webseite, Data Warehouse oder Analyseprogramme, ohne eine leistungsfähige Datenbank im Hintergrund sind viele Anwendungen undenkbar. Je größer die Datenmengen und je komplexer die Datenbankabfragen werden, umso leistungsfähiger muss das Datenbankmanagementsystem sein. PostgreSQL gilt heute als die weltweit fortschrittlichste Open-Source-Datenbanksystem für komplexe Datenbanken.

PostgreSQL – komplexe Daten sicher speichern und verwalten

Es ist ein leistungsstarkes, objektrelationales Datenbanksystem, abgekürzt ORDBMS. Die Software ist Open Source und kann kostenlos für private und geschäftliche Anwendungen genutzt werden. PostgreSQL unterstützt fast alle gängigen, für die Entwicklung von Prozeduren und Funktionen verwendeten Programmiersprachen sowie SQL (relational) als auch JSON (nicht-relationale) Abfragen. Die Leistung des Datenbank-Management-Systems ist mit kommerziellen Datenbanksystemen wie Oracle oder dem SQL-Server vergleichbar.

Das System beinhaltet viele Erweiterungen, die zusätzliche Funktionalität bieten, einschließlich PostGIS, Internationalisierung, Volltextsuche oder eine Unterstützung für internationale Zeichensätze. PostgreSQL ermöglicht es Benutzern darüber hinaus, das System um selbstdefinierte Datentypen, Operatoren, Trigger, Funktionen und Regeln, mit denen Zugriffe auf Datenbankobjekte gesteuert werden können, zu erweitern. Die Datenbank kann als 32 und 64 Bit Applikation auf Unix/Linux Umgebungen, MacOS und Windows Plattformen eingesetzt werden. PostgreSQL wird als primäre Datenbank und als Data Warehouse für viele Web-, Mobil-, Geo- und Analyseanwendungen eingesetzt.

Die Geschichte von PostgreSQL kurz gefasst

Das PostgreSQL-Projekt startete bereits 1986 unter der Leitung von Prof. Michael Stonebreaker an der Universität von Kalifornien, in Berkeley. Ursprünglich hieß das Projekt POSTGRES, in Anlehnung an die einige Jahre zuvor ebenfalls in Berkeley entwickelte Ingres-Datenbank. Im Rahmen des Projektes wurden verschiedene Funktionen, die beispielsweise zur vollständigen Unterstützung mehrerer Datentypen erforderlich sind, entwickelt und dem Ingres Nachfolger hinzugefügt. 10 Jahre nach dem Start im Jahr 1996 wurde das Projekt in PostgreSQL umbenannt, um zu verdeutlichen, dass POSTGRES die SQL-Abfragesprache unterstützt. Eine engagierte und weltweite Community unterstützt Anwender und erstellt bis heute regelmäßig Erweiterungen und neue Versionen für das Open-Source-Datenbankprojekt.

Wie funktioniert PostgreSQL?

PostgreSQL basiert wie die meisten relationalen Datenbanken auf einem Client-Server-Modell. Ein Serverprozess verwaltet die Datenbankdateien sowie die Verbindungen, die von Client-Programmen zum Server aufgebaut werden und bearbeitet die Anfragen, die von diesen Client-Programmen gestellt wurden. Diese Aufgaben werden bei PostgreSQL von einem „postmaster“ genannten Serverprogramm erledigt. Für die Kommunikation mit dem postmaster können verschiedene Client-Programme eingesetzt werden. Mit der PostgreSQL Distribution wird bereits ein als „psql“ bezeichneter schneller, aber einfach zu bedienender Datenbank-Monitor mitgeliefert. In den meisten PostgreSQL Linux-Distributionen ist mit „pgAccess“ ein grafischer Client enthalten, der auch auf Windows Plattformen genutzt werden kann. Bei interaktiven Webseiten übernimmt in der Regel der Webserver die Rolle des Client.

Typisch für das Client-Server-Modell ist die verteilte Architektur. Client und Server müssen nicht auf demselben dedizierten oder virtuellen Server installiert werden. Bei getrennter Installation kommunizieren Client und Server über eine TCP/IP Verbindung. Ein Vorteil ist, dass der PostgreSQL Server viele parallele Verbindungen verwalten kann. Jedes Mal, wenn sich ein Client mit dem Server verbindet, startet der „postmaster“ einen neuen Prozess, der dann die Client-Server-Kommunikation übernimmt.

Worin unterscheiden sich PostgreSQL und MySQL?

Zwischen beiden Datenbank-Managementsystemen gibt es zahlreiche Entsprechungen aber auch Unterschiede. Beide Systeme sind SQL konform. Wobei PostgreSQL eine höhere Konformität mit den SQL-Spezifikationen aufweist als MySQL. Postgre SQL und MySQL basieren auf Tabellen, ähnlich einer Excel Tabelle, in deren Felder Daten gespeichert werden können. In einer relationalen Datenbank wie MySQL werden üblicherweise nur alphanumerische Daten zum Beispiel Produktbezeichnungen, Orte, Postleitzahlen oder Straßennamen gespeichert. MySQL ist weitverbreitet bei webbasierten Projekten, die eine Datenbank für einfache Datentransaktionen benötigen.

PostgreSQL ist eine objektrelationale Datenbank, bei der die Prinzipien einer relationalen Datenbank auf die Speicherung und Organisation beliebiger Daten ausgeweitet wurden. PostgreSQL ermöglicht die Speicherung von Datenobjekten und Operationen mit einer deutlich höheren Komplexität als MySQL. Beispiele für komplexe Daten, bei denen relationale Datenbanken schnell an ihre Grenzen stoßen, sind Bild- und Textdateien, geografische Karten, Audio- und Videodateien. Aufgrund der Möglichkeit, komplexe Daten speichern und miteinander verknüpfen zu können, ist PostgreSQL prädestiniert für große Systemen, wo hohe Lese- und Schreibgeschwindigkeiten gefordert werden, komplexe Abfragen beantwortet und Daten validiert werden müssen.

Keine Begrenzung bei der Datenbankgröße

Die Größe einer PostgreSQL Datenbank ist theoretisch unbegrenzt. In der Praxis wird die Größe der Datenbank wahrscheinlich eher durch die Speicherkapazität des dedizierten oder virtuellen Servers beschränkt als durch die Grenzen von PostgreSQL. Eine einzelne PostgreSQL Tabelle kann bis zu 32 Tera-Byte groß werden. Diese Tabelle kann wiederum unbegrenzt viele Datensätze enthalten, die jeweils bis zu maximal 1,6 TB groß sein können. Lediglich die Anzahl der Spalten ist, je nachdem, welche Datentypen verwendet werden, auf 250 – 1600 begrenzt. Jedes Feld einer Spalte kann bis zu 1 Gigabyte Daten aufnehmen und für jede Tabelle könne unbegrenzt viele Indizes definiert werden.

Die Anwendung gilt heute als das mit Abstand fehlerfreiste und stabilste Open Source Datenbanksystem. Es wird unter anderem von der Deutschen Telekom, verschiedenen Sparkassen Verbänden, den Verwaltungen verschiedener Schweizer Kantone sowie Skype eingesetzt.

Die Software SQLite ist eine verbreitete Programmbibliothek. Sie bietet die vollständige Laufzeitumgebung für eine SQL-basierte Datenbank. Die Besonderheit ist, dass sie den Datenbestand in einer einzelnen Datei vorhält. Zudem ist sie mit der Abfragesprache SQL kompatibel. Die Software ist gemeinfrei, also frei von Urheberrechten. SQLite ist in allen gängigen Betriebssystemen implementiert.

Geschichte und Herkunft

SQLite wurde im Jahr 2000 durch D. Richard Hipp im Rahmen seiner Tätigkeit für die amerikanische Firma General Dynamics entwickelt. Dies geschah im Auftrag der Marine des US-Militärs. Zunächst handelte es sich um eine Erweiterung der Skriptsprache Tcl. Inzwischen wird SQLite von zahlreichen Programmier- und Skriptsprachen unterstützt.

Der Name setzt sich aus der Abkürzung für die Abfragesprache Structured Query Language (SQL) und der umgangssprachlichen Bezeichnung Lite, für eine „abgespeckte“ Version, zusammen. Aktuell wird das Projekt SQLite von D. Richard Hipp und zwei weiteren Entwicklern fortgeführt.

Obwohl SQLite lizenzfrei angeboten wird, ist es möglich, kostenpflichtigen Support und Erweiterungen bei den Entwicklern zu erwerben.

Details zur Funktionsweise

Die SQLite-Bibliothek ist in Desktop Betriebssystemen wie Windows, MacOS und den Linux-Distributionen enthalten. Auch die verbreiteten Smartphone-Betriebssysteme Android und iOS unterstützen SQLite nativ.

Die gesamte Anwendung läuft in einem Prozess. Anders als bei anderen Datenbanksystemen, wie MySQL, ist keine Server-Client-Architektur nötig.

SQLite verwendet eine relationale Datenbank. Die Daten werden in Tabellen abgelegt, die spaltenweise über einen Identifier angesprochen werden können. Dies hat den Vorteil, dass Daten nicht redundant vorgehalten werden müssen. Vielmehr können die Inhalte einer Tabelle mit einer oder mehreren Spalten anderer Tabellen verknüpft, also in Relation gesetzt werden.

So ist es typisch für eine Speicherung in relationalen Datenbanken, dass Daten je nach Zweck in unterschiedlichen Tabellen abgelegt werden. Eine Mail-Software könnte beispielsweise folgende Tabellen in ihrer Datenbank führen:

-Kontakte: Enthält die Mailadressen der Kommunikationspartner,

-Konversation: Speichert den Mailverlauf mit einem Gesprächspartner,

-Mails: Beinhaltet die Metadaten einzelner Mails,

-Attachments: Weist Metadaten und Pfade von Anlagen auf.

Anstatt nun in jeder Spalte der Tabelle „Mails“ die Adressen der Absender und Empfänger aufzuführen, wird dort nur die Ordnungsnummer des Kontakts abgelegt. Entsprechend erfolgt die Zuordnung der Anlagen und die Zuordnung einer einzelnen Mail zu einer Konversation.

Datentypen unter SQLite

Daten können in verschiedenen Formaten abgelegt werden. Dies erleichtert die Weiterverarbeitung ohne vorherige Konvertierung. Mögliche Datentypen sind: Null (Nullwert), Integer (Zahlenwert), Real (Fließkommazahl), Text (Klartextlicher Inhalt) und Blob (Binärwert).

Hiermit sind alle Datentypen abbildbar. So werden Datumswerte häufig als Zahlenwert, etwa im Format Unix-Time (Sekunden seit dem 01.01.1970), abgelegt. Alternativ findet sich auch eine Notierung im klartextlichen Datumsformat.

Sehr universell wird der Datentyp Blob (Binary Large Object) eingesetzt. Es können beispielsweise Vorschaubilder darin abgelegt werden. Ebenso finden sich aber auch Konfigurationsdateien, etwa im XML- oder PLIST-Format, in Blob-Datenfeldern.

Datensicherheit und temporäre Dateien

SQLite beherrscht zwei Methoden zur Gewährleistung der Konsistenz einer Datenbank.

Eine Möglichkeit ist das Führen eines Rollback-Journals. Hier wird beim Öffnen der Datenbank ein temporäres Journal erstellt. Dies erhält den Namen der Datenbank mit der Endung „-journal“. In der Datei werden die vorgenommenen Änderungen dokumentiert. So kann beim Auftreten von Problemen eine Wiederherstellung (Rollback) erfolgen.

Die andere Alternative ist die Nutzung des Write-Ahead-Logs (WAL). Bei dieser Methode werden Änderungen zunächst in die Logdatei geschrieben. Die permanente Übernahme in die Datenbank erfolgt beim ordnungsgemäßen Schließen der Datenbank oder durch manuelle Speicherung mit einem Commit-Befehl.

Zudem wird in diesem Fall ein Index in der „Shared-Memory“-Datei (SHM) geführt.

Entsprechend werden bei dieser Methode zwei temporäre Dateien angelegt. Diese erhalten den Namen der Datenbank mit den Endungen „-shm“ und „-wal“.

Schnittmengen mit SQL

Die Verarbeitung der Inhalte in SQLite-Datenbanken erfolgt mittels der Abfragesprache nach dem SQL-92 Standard. Hierdurch ist gewährleistet, dass SQL-Befehle und Abfragen angewendet werden können.

Die Speicherung eines Kontaktes könnte beispielsweise durch einen Befehl nach dem Muster

INSERT INTO kontakte (lfd_nr, name, vorname, mailadresse, rufnummer) VALUES (1, „Mustermann“, „Max“, „mustermann@muster.xyz“, „0123/45678“)

erfolgen. Hierdurch würden in der Tabelle „kontakte“ in die Spalten innerhalb der ersten Klammer die Werte aus der zweiten Klammer eingetragen.

Inhalte aus verschiedenen Tabellen können durch den Befehl JOIN kombiniert werden. Zudem ist es möglich, die Ausgaben beispielsweise durch Befehle wie WHERE und LIKE an Bedingungen zu knüpfen.

Anwendungsgebiete von SQLite

Inzwischen findet man SQLite-Datenbanken als Unterbau vieler Anwendungen. Gängige Apps auf Smartphones, zum Beispiel Messenger wie WhatsApp und Facebook, legen ihre Daten darin ab. Ebenso Browser wie Firefox und Chrome auf Desktop-PC.

Auch kommerzielle Programme nutzen SQLite. Dies bietet sich für verteilte Anwendungen an. Es muss nur die Datenbank für alle Anwender freigegeben sein. Hierdurch ist auch keine besondere Performanz mehr nötig und es ist gut möglich, diese auf virtuellen Servern bereitzustellen.

Ein solcher muss sich nicht notwendigerweise physikalisch im eigenen Netzwerk befinden. Zur Gewährleistung der Verfügbarkeit können sich hierfür extern gehostete Server anbieten.