Postgresql Tabellen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Mein Datenbank Design sieht momentan so aus:

WERTTYP: id, name

MESSSTATIONEN: id, name,owner

MESSUNG: id, messstation_id, werttyp_id, timestamp, wert

Meine Überlegung wäre es jetzt MESSUNG so umzuformen:

MESSUNG: id, messstation_id, timestamp, wert1, wert2, wert3, wert4, wert5, wert6

Ja das stimmt das wären dann aber immerhin mehr als 4 Monate die ich auf die Daten zurückgreifen könnte.

Ich weiß allerdings will ich solange ich das ganze noch Entwickel möglichst meine Kosten gering halten.
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Die Auswahl von DBMS ist gefühlt riesig. Wenn genau das System, das du einsezen willst, ein Feauture hat, das kein anderes bietet, dann musst du halt die Vollversion kaufen, damit es keine Beschränkung der Einträge in einer Tabelle gibt. Das Tabellendesign kaputtzufrickeln, nur damit es mit der Trial-Version läuft, wäre wenig zielführend.
Also: gibt es ein solches Feature? Falls nicht, setz halt ein, was es am Markt etabliert gibt: PostgreSQL, MariaDB/MySQL, sqlite3 wenn es lokal reich oder von mir aus auch so etwas wie Firebird.

Allerdings bin ich verwirrt: Das Thema heißt doch "Postgresql Tabellen" (sic!), da gibt es doch gar keine Beschränkung.
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@sparrow: Ich habe das jetzt so interpretiert das er eine kontenlose PostgreSQL bei einem Anbieter verwendet, der aber Geld sehen will wenn man da mehr als 10.000 Datensätze drin speichern möchte.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Richtig ich nutze heroku.com da läuft eben auch meine Website mit der ich die Datenbank verbinde.
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Dann schau doch mal, ob es nicht sinnvoller ist, statt Postgres sqlite zu verwenden.
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Das Problem dabei ist das die Datenbank in einer Datei ist. Wenn ich dann meinen Server aktualisieren will also etwas im Code ändern möchte muss ich ja wieder den ganzen Ordner hochladen. Damit dann die Datenbank bestehen bleiben würde müsste ich erst die Datei Herunterladen in den Ordner ziehen und dann wieder mit Hochladen. Das wäre ein ziemlicher Aufwand.
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Im Gegensatz zur Migration deiner Datenbank? Das geht doch genauso wenig automatisch, und sobald du da etwas nicht triviales machst ist ggf wegwerfen & neu aufsetzen eh die besser Idee. Außerdem musst du doch die SQLite überhaupt nicht transferieren. Welchen Nutzen haben denn die Daten von Lokal?
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Ich glaube ich sollte mich ein bisschen besser erklären. Also meine Webanwendung in Flask läuft auf Heroku. Wenn ich da etwas im Code ändern will programmiere ich das ganze Lokal bei mir und muss dann den ganzen Ordner, mit den Dateien Python HTML usw., auf den Server hochladen wodurch die alte Version überschrieben wird.
Wenn ich es richtig verstanden habe ist SQLite eine Datenbank welche in einer Datei ist und diese Datei muss ja auch in dem Ordner sein den ich Hochlade. Wenn ich jetzt eine neue Version Hochlade dann wird meine alte SQLite Datenbank überschrieben und meine Messdaten sind weg.
Um das zu verhindern müsste ich also vor jeder neuen Version die ich mache die Datenbank mit den Messdaten vom Server Herunterladen in den Ordner kopieren und wieder mit Hochladen, damit nichts verloren geht.
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Und bei den äquavilenten 10000 Zeilen deiner Postgres reden wir hier über wieviele Kilobyte? Bei angenommenen 100 Byte pro Zeile ein GANZES Megabyte. Da ist so ein DSL Anschluss schonmal SEKUNDEN mit beschäftigt ... 😁
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Mir geht es nicht um die Datengröße sondern um den Aufwand der dabei entsteht.
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Aber das soll doch gerade genommen werden weil es mehr als 10.000 Datensätze werden sollen. 😎
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Einen Tod muss man Sterben. Meine Vorhersage: Gaming the System. Unter Ausnutzung der Spaltenanzahlbegrenzung ALLES rausholen aus den 10000 Zeilen. So wie gute deutsche am all you can eat buffet.
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Jo am besten auch nicht nur alle Spalten nutzen, sondern da auch in jedem Datensatz in jeder Spalte JSON mit ordentlich vielen Werten speichern. 🤡
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich könnte Geschichten erzählen. Aber dann kriege ich Knatsch....
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

@Hypec: Dann lade doch die Datei mit der Datenbank doch einfach nicht mit hoch - dann wird sie auch nicht überschrieben.
Der Aufwand sollte sich, im Gegensatz zu der willkürlichen Postgres-Begrenzung, in Grenzen halten und man kann die Datenbank benutzen, wie man Datenbanken benutzen soll.
Sirius3
User
Beiträge: 17753
Registriert: Sonntag 21. Oktober 2012, 17:20

Zur Erklärung, Rechnen in der Cloud mit Containern: man hat eine klare Trennung zwischen Programmcode und der Ausführung mit etwa temporärem Speicher und dauerhafter Datenspeicherung. Den Speicher für den Programmcode bekommt man geschenkt, da kann man aber auch keine Daten speichern, die Umgebung, in der etwas ausgeführt wird, kann jederzeit automatisch platt gemacht werden und an einer anderen Stelle wieder mit dem Programmcode neu erzeugt werden, oder wegen Parallelisierung kann es 100 identische Instanzen geben.

Alles was man dauerhaft speichern will, kann deshalb nicht einfach so geschrieben werden, sondern man muß den Speicherplatz zusätzlich dazubuchen, entweder als Objektstore, oder als Datenbank oder ...
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@Hypec: Eine DB mit 10.000 Zeilen Limit ist ja, wie schon festgestellt wurde, relativ perspektivlos für das, was du vorhast.

Du kannst bei Heroku für 9.- USD/Monat die DB größer machen, dann sind 10 Millionen Zeilen erlaubt.
Wenn dir das zu viel ist, musst du halt über einen Providerwechsel nachdenken. Sehr flexibel ist das Hosting Uberspace, da hast du ziemlich viele Möglichkeiten. Oder du rechnest dir mal durch, ob es z.B. bei AWS nicht preiswerter als 9.- USD/Monat ist.

Plan C: alles auf dem Raspi selber hosten. Dann hast du aber zusätzlich die volle Administration deines eigenen Servers an der Backe.

Gruß, noisefloor
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Also ich habe jetzt nochmal nachgelesen und SQLite funktioniert leider nicht zusammen mit Heroku.
https://devcenter.heroku.com/articles/sqlite3
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

noisefloor hat geschrieben: Mittwoch 15. Mai 2019, 07:27Oder du rechnest dir mal durch, ob es z.B. bei AWS nicht preiswerter als 9.- USD/Monat ist.
Der ALB alleine kostet schon ~20 USD / Monat. Traffic, Compute (EC2, ECS, Lambda, ...) und RDS kämen noch drauf. Außerdem ist es wesentlich mehr Aufwand als Heroku.
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

Hypec hat geschrieben: Mittwoch 15. Mai 2019, 16:14 Also ich habe jetzt nochmal nachgelesen und SQLite funktioniert leider nicht zusammen mit Heroku.
https://devcenter.heroku.com/articles/sqlite3
Ich möchte noisefloors Vorschlag bzgl. Uberspace noch mal unterstreichen. Das ist zwar keine "PaaS" in der Cloud wie Heroku, aber du hast halt einen SSH Zugang auf einen regulären Server und ziemlich viele Möglichkeiten. Bei Uberspace musst du dich dann mit mysql/mariadb begnügen, was zwar normalerweise nicht meine erste Wahl wäre, aber so tragisch ist das auch nicht. Jedenfalls hast du da eine ganze Datenbank für dich alleine und sqlite wäre ansonsten auch kein Problem.
Antworten