[Projekt] cpdb (OpenSource In-Memory Spaltenbasierte Datenbank)

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Antworten
antisteo
Establishment
Beiträge: 833
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

[Projekt] cpdb (OpenSource In-Memory Spaltenbasierte Datenbank)

Beitrag von antisteo »

Hey Leute,

ich stelle heute mal ein etwas ungewöhnliches Projekt vor: eine In-Memory-Datenbank (oder erst mal: Storage Engine) mit String- und Integer-Kompression, die später mal ein vollwertiger Nachbau eienr nicht näher benannten In-Memory-Datenbank eines ERP-Herstellers werden soll.

Kurz zum Abriss: Die DB ist besonders gut für analytische Queries geeignet, da man in einer spaltenbasierten Datenbank viel schneller so etwas wie Summen zusammenrechnen kann.

Dazu blogge ich auch auf launix.de. Der erste Blogbeitrag ist hier zu bestaunen:

https://launix.de/launix/on-designing-a ... in-golang/
https://launix.de/launix/how-to-balance ... workflows/

Bild
Zuletzt geändert von antisteo am 20.01.2023, 20:17, insgesamt 2-mal geändert.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
NytroX
Establishment
Beiträge: 278
Registriert: 03.10.2003, 12:47

Re: [Projekt] cpdb (OpenSource HANA-Nachbau)

Beitrag von NytroX »

Generell sehr interessant.
Bedarf an einer guten Storage-Lösung besteht auf jeden Fall in der Welt.

Spaltenbasierte Datenbanken sind gar nicht mal so gut; es ist quasi das ECS der Datenbanken :-)
Kann Vorteilhaft sein, wenn es deinem Usecase entspricht, aber man kommt sehr schnell an die Grenzen (z.B. wenn du große Tabellen filtern willst).

Spannend wären auf jeden Fall die TradeOffs, die du machen willst.
(d.h. sind die Daten bei einem Crash/Neustart weg, oder gibt es ein Backing-Store, und wie kommen die Daten performant da hin, usw. :-)

Mach am besten relativ früh Performance-Tests und vergleiche sie mit bestehenden DBs (z.B. einfach MariaDB, wenn >6GB Daten drin sind).

Hast du Erfahrung mit DB-Entwicklung?
antisteo
Establishment
Beiträge: 833
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: [Projekt] cpdb (OpenSource)

Beitrag von antisteo »

Hallo NytroX,

ich habe selbst in den Forschungsteams rund um die Datenbank-Forschung gearbeitet und deshalb auch Erfahrung in der DB-Entwicklung.

Große Tabellen filtern geht bei Columnar Storages sogar ziemlich gut, da du im Filter-State nur die Spalten laden musst, nach denen auch gefiltert wird.

Allein die Kompressionsmöglichkeiten (Hey! Die Datenbank nimmt nur 50% des Platzes gegenüber der InnoDB ein. Damit bist du allein schon beim Full Scan um Größenordnungen schneller fertig, weil du weniger Speicherseiten einlesen musst)
Zuletzt geändert von antisteo am 20.01.2023, 20:19, insgesamt 2-mal geändert.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
antisteo
Establishment
Beiträge: 833
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: [Projekt] cpdb (OpenSource)

Beitrag von antisteo »

Zweiter Blogbeitrag - diesmal über die Wahl von Scheme als Programmiersprache für die Query Plans in unserer In-Memory-Engine

https://launix.de/launix/designing-a-pr ... lgorithms/
Zuletzt geändert von antisteo am 20.01.2023, 20:18, insgesamt 1-mal geändert.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
antisteo
Establishment
Beiträge: 833
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: [Projekt] cpdb (OpenSource)

Beitrag von antisteo »

Ein kleiner Beitrag, wie die DB eigentlich OLAP und OLTP-Workloads in einer einzigen Engine performant unterbringt:

https://launix.de/launix/how-to-balance ... workflows/
Zuletzt geändert von antisteo am 20.01.2023, 20:18, insgesamt 1-mal geändert.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
antisteo
Establishment
Beiträge: 833
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: [Projekt] cpdb (OpenSource)

Beitrag von antisteo »

Und jetzt ein kleiner Benchmark hinterher:

https://launix.de/launix/how-in-memory- ... rformance/
Zuletzt geändert von antisteo am 20.01.2023, 20:19, insgesamt 1-mal geändert.
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
antisteo
Establishment
Beiträge: 833
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: [Projekt] cpdb (OpenSource)

Beitrag von antisteo »

Im nächsten Beitrag gehts um den Aufbau von Indizes:

https://launix.de/launix/memory-efficie ... -storages/

Insgesamt habe ich eine Query-Zeit von 50µs zum Finden eines Strings in einer 10K-Einträge-Liste geschafft
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
antisteo
Establishment
Beiträge: 833
Registriert: 15.10.2010, 09:26
Wohnort: Dresdem

Re: [Projekt] cpdb (OpenSource In-Memory Spaltenbasierte Datenbank)

Beitrag von antisteo »

In diesem Beitrag habe ich noch mal 40% des RAM-Verbrauchs eingespart, indem ich NULL-Werte mit weniger als 1 bit komprimiere:

https://launix.de/launix/on-compressing ... -storages/
http://fedoraproject.org/ <-- freies Betriebssystem
http://launix.de <-- kompetente Firma
In allen Posts ist das imo und das afaik inbegriffen.
Antworten