Beiträge

August 2024

Online-Shopping wieder beliebter
KI steigert Umsatz und Zufriedenheit im Vertrieb

Juli 2024

Das Social Media Modul der Digital Concepts E-Commerce Plattform
E-Commerce Report: Lokalität, Versand und Nachhaltigkeit
E-Commerce Report 2023: Zahlungsmittelpräferenzen

Juni 2024

Der E-Commerce Report 2023: Der Onlinehandel wächst wieder
WhatsApp for Business: Was sind die Vorteile?
Mehr Traffic & schwarze Zahlen? Local-SEO macht’s möglich!
Wasserzeichen für KI-Generierte Bilder

Mai 2024

Grenzen der KI im E-Commerce
Neue Untersuchung: KundInnen kaufen weniger aber häufiger mobil
Newsletterversand: Was muss rechtlich beachtet werden? - Basics

April 2024

Das österreichische E-Commerce Gütezeichen
E-Rechnungspflicht in der EU?
Ignoranz gegenüber Cookie-Ablehnungen: Immer noch weit verbreitet
Digitale Transformation in Östererich - Kluft zwischen großen und kleinen Betrieben
Recht und Webshop - Basics

März 2024

Der Unified Commerce Benchmark
AR und VR im E-Commerce: Schon relevent oder noch Spielerei?

Februar 2024

Mehrheit der Cookie-Banner illegal
Neue Regelungen für Auszeichnungen von Rabatten

Januar 2024

Das Ende der Cookie-Banner?
Evolution des Online-Shoppings: Mehr als nur Mausklicks und Lieferungen an die Tür
6 Top Highlights des Checkouts NG

Dezember 2023

Die EU-Whistleblower-Richtlinie und das Hinweisgeberschutzgesetz
7 Last Minute-Tipps für ein erfolgreiches Weihnachtsgeschäft

November 2023

AI Trend Report
Barrierefreiheit in Webshops

Oktober 2023

B2B Trend Report
Studie "E-Commerce-Markt Deutschland 2023": Kleine Händler gewinnen dazu während große verlieren
Erkenntnisse: Österreichische Werbemarktstudie 2023

September 2023

Green Commerce Studie des Handelsverbandes und EY
Nachhaltigkeit im Handel: Sustainable Commerce Report
Gestaltung der Zahlungsauswahl im Checkout

August 2023

Die User State Machine von Digital Concepts
Der Start in den Onlinehandel: Ein kurzer Leitfaden
Zahlungsmethoden im Onlineshop: Vorlieben und Verhalten der Verbraucher
Warum lange Ladezeiten der Störfaktor Nr. 1 für erfolgreiche Conversions sind

Juli 2023

D2C-Studie DACH 2023: E-Mail beliebtester Kommunikationskanal
Suchen und Finden: Produktsuche in Webshops
Ergebnisse des Handelsverband Shopping-Index 2023
Erkenntnisse aus dem E-Commerce Report 2022

Juni 2023

Effektive Strategien zur Steigerung der Nutzung Ihres B2B-Shops
Künstliche Intelligenz im E-Commerce
Tipps für den optimalen Check-out im Online-Shop

April 2023

Punchout Best Practice
Wie teste ich das Newsletter-Layout in mehreren Clients?
Trends im B2B-Commerce 2023
Social Media Crosspostings

Februar 2023

cXML PUNCHOUT - was und wie kurz erklärt

Januar 2023

Responsives Webdesign & moderne Webshops

Dezember 2022

Neun von zehn (89%) der Firmen finden online Kauf komplizierter als offline Kauf

September 2022

Entlasten Sie Ihren Vertrieb mit dem Vertretermodul von digital concepts

August 2022

Google Fonts und die IP Adresse - Mythen und Fakten
Änderungen/Neuerungen bei der Einbindung von Google Fonts

Juni 2022

Studie "Online Payment 2022"

Mai 2022

Änderungen bei Google Analytics
Digitalisierung im Business? Diese Vorteile bringt ein Onlineshop

April 2022

Warum Videos wichtig sind

Juni 2021

Änderung der Lieferschwellen in der EU - One-Stop-Shop Verfahren

Mai 2021

Umgang mit technisch notwendigen Cookies

April 2021

Wegweiser durch Förderungsdschungel

November 2020

Mehr potenzielle Kunden durch Social Logins erreichen

August 2020

Bessere Ladezeiten durch Bilder im WebP-Format

April 2020

Die Shop-App von digital concepts
Cookies und warum sie gebraucht werden

März 2020

2-Faktor-Authentifizierung bei digital concepts
SEO-Basics

Februar 2020

Rückblick 2019 (Teil 3)
Rückblick 2019 (Teil 2)
Rückblick: Was hat sich 2019 bei digital concepts getan? (Teil 1)

November 2019

Cookie Consent Controller

Mai 2019

Die richtige Content-Strategie für den Onlineshop

April 2019

Versionsverwaltung im Shopsystem: Bei digital concepts kein Problem

März 2019

Kundenbewertungen: Warum sie nicht unterschätzt werden sollten

Juni 2018

DSGVO - Die 5 wichtigsten Punkte für Ihren Webauftritt

September 2017

Die Datenschutz-Grundverordnung - Viel Neues ab 2018

Juli 2017

Bessere Onlineshops durch Analyse von Mausbewegungen und Klicks

April 2017

Bilder sagen mehr als Tausend Worte - Warum Bilder im Webshop wichtig sind!

März 2017

Omnichannel - Die Verschränkung von Online- und stationärem Handel

Januar 2017

Ende für SHA-1 Zertifikate

Dezember 2016

Unerwartete Überlastungen des Webshops - Lösungsansätze

November 2016

Amazon Marketplace vs. Eigener Shop

Oktober 2016

Kundenloyalität (Teil 3)

September 2016

Kundenbindung (Teil 2)

August 2016

Kundenbindung vs Kundenzufriedenheit vs Kundenloyalität (Teil 1)

Juli 2016

Responsive Design vs. Mobile Website - Was ist Besser für SEO?
Was Gütesiegel im E-Commerce bringen

Juni 2016

Alternative Streitbeilegung - Informationspflichten ab 2016

Mai 2016

Wie man richtig testet - Eine Checkliste für Webshops
Hochkarätiges E-Commerce-Treffen
Webshop im B2B Bereich - hier schlummert enormes Potenzial
Was bedeutet „Responsive Design“
Die wichtigsten E-Commerce-Trends 2016
Ist Ihre Webseite schon barrierefrei?
Wertvolle Tipps, wie Sie im Web erfolgreicher werden
Der Einfluss von Ladezeiten
7 SEO Tipps für Ihren Webshop
Was bedeutet Google Analytics?
Google+ Pro und Contra
Ist Ihre Webseite für Smartphones & Tablets optimiert?
JSON mit Postgres
DNS Einträge

April 2016

Blog

Themen

JSON mit Postgres

NOSQL mit SQL

Postgres hat in der Version 9.3 den JSON Datentyp spendiert bekommen, der die effiziente Speicherung und den einfachen Zugriff auf json Dokumente erlaubt. In der Version 9.4 wurde ihm nun der Datentyp JSONB zur Seite gestellt. Dieser speichert json Daten binär und voll indizierbar und ist sowohl bei Zugriff als auch bei Speicherung effizienter als sein Vorgänger. Diese Datentypen sind sich ähnlich genug, dass sie für gewöhnliche Anwendungen untereinander ausgetauscht werden können. Damit steht Postgres bei der Speicherung unstrukturierter Daten der NOSQL Konkurrenz um nichts nach und überflügelt sie sogar deutlich.

Für die allermeisten Anwendungsfälle ist nach wie vor die strukturierte Speicherung von Daten die beste Lösung. Bei der Neuentwicklung eines Moduls für das Digital Concepts Framework hatten wir einen Anwendungsfall, für den dieser Datentyp sich als idealer Kandidat erwies. 


Die Aufgabe

Es galt ein Modul zu entwickeln, das die Beschreibung von Immobilien in beliebig vielen Sprachen erlaubt. Verschiedene Objekte haben dabei unterschiedliche Felder. Zu erwarten waren viele SELECTs und nur relativ wenige UPDATE Operationen. Natürlich haben wir diese Art von Anforderung schon auf verschiedene Arten, mit den jeweiligen Vor- und Nachteilen, gelöst.

Die volle Unterstützung des JSON Datentyps in Postgres erlaubt uns aber alle Sprachversionen der einzelnen Felder auf effiziente und übersichtliche Weise zu speichern und die Anzahl der JOINS ohne Einschränkungen der Abfragemöglichkeiten zu minimieren. Gratis bekommen wir noch die Möglichkeit dazu, alle Sprachversionen direkt als JSON zu übermitteln, um so im Backend zB via AngularJS die einzelnen Sprachversionen ohne zusätzliche AJAX oder vollständige Seitenaufrufe anzeigen zu können.

Die erhofften Vorteile, kurz zusammengefasst, waren daher:

  • vereinfachtes Datenmodell
  • effizientere Abfragen durch Vermeidung von JOINS
  • effiziente, native Rückgabe aller Sprachversionen für den Administrationsbereich.

Wie immer hielten wir vor allem die Abfrageperformance ganz besonders im Auge. Da wir mit dem Upgrade von Postgres auf eine "x.y.1" Version warten, und bisher noch die Version 9.4.0 von Postgres aktuell ist, müssen wir uns mit dem JSON Datentyp bescheiden, werden aber auf JSONB wechseln, sobald das möglich ist. 


Die Umsetzung

Die genauen Details der Umsetzung ist recht umfangreich, darum werde ich hier nur eine vereinfachte Version beschreiben. Die Vereinfachungen betreffen nur die Anzahl der Felder, nicht jedoch die allgemeine Funktionalität.

Zuerst legen wir eine einfache Tabelle an. Der FOREIGN KEY ist deaktiviert, um das Beispiel leichter nachvollziehbar zu machen.

CREATE SEQUENCE object_id_seq;CREATE TABLE objects (    
object_id INTEGER NOT NULL DEFAULT NEXTVAL('object_id_seq'),    
creation_date TIMESTAMP NOT NULL DEFAULT now(),    
creation_user INTEGER NOT NULL, -- REFERENCES users(user_id)
name JSON NOT NULL,    
description JSON
);

Dann generieren wir 10.000 Objekte. Einen 32 Zeichen langen Namen und eine 1024 Zeichen lange Beschreibung in jeweils 7 Sprachen. Für unsere Anforderungen sind wir damit im sicheren Bereich, die tatsächliche Objektanzahl wir 10.000 nie erreichen.

INSERT INTO objects (
	creation_date, creation_user, name, description
)
SELECT now() AS creation_date, 1 AS creation_user,  
	('{' ||
	'"hu":"' 	|| md5(random()::TEXT) || '",' ||
	'"es":"'  || md5(random()::TEXT) || '",' ||
	'"it":"'  || md5(random()::TEXT) || '",' ||
	'"cs":"'  || md5(random()::TEXT) || '",' ||
	'"fr":"'  || md5(random()::TEXT) || '",' ||
	'"de":"'  || md5(random()::TEXT) || '",' ||
	'"en":"'  || md5(random()::TEXT) || '"'  ||
	'}')::JSON AS name,
	('{' ||
	'"hu":"'  || encode(gen_random_bytes(1024), 'hex') || '",' ||
	'"cs":"'  || encode(gen_random_bytes(1024), 'hex') || '",' ||
	'"it":"'  || encode(gen_random_bytes(1024), 'hex') || '",' ||
	'"cs":"'  || encode(gen_random_bytes(1024), 'hex') || '",' ||
	'"fr":"'  || encode(gen_random_bytes(1024), 'hex') || '",' ||
	'"de":"'  || encode(gen_random_bytes(1024), 'hex') || '",' ||
	'"en":"'  || encode(gen_random_bytes(1024), 'hex') || '"'  ||
	'}')::JSON AS description
FROM generate_series(1,10000)

Newsletter Anmeldung

Zum digital concepts Newsletter anmelden und Informationen rund um die Themen Softwareentwicklung und Online Shops erhalten.


nach oben

FIRMA

digital concepts
Novak Winkler OG
Landstraße 68/5. Stock
4020 Linz
AUSTRIA

+43 732 9971170
service@digital-concepts.com

DIGITAL CONCEPTS

Wir sind die Profis für individuell angepasste Shopsysteme und E-Commerce Lösungen mit allen aktuellen Features, die Sie für Kunden im B2B- oder im B2C-Bereich benötigen.

© 2022 by digital concepts - Die E-Commerce Lösung.  |  "Wir machen unsere Kunden beim Verkauf im Web erfolgreich!"