[MariaDB] iedere subdir een database

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • marque1968
  • Registratie: November 2012
  • Laatst online: 27-07 11:06
Op dit moment heb ik software die voor iedere klant in een eigen directory draait. In die directory staan ook alle database tabellen (TopSpeed database)

Iedere klant draait zijn eigen versie van de software op de eigen database. Is er een probleem bij een klant, kan ik die klant vragen uit te loggen en kan ik de DB te fixen, zonder dat de andere klanten iets merken. Moet ik wat testen, kopieer ik de hele subdir van een klant naar een testdir en kan daar die versie van de software testen met die database gegevens. Als ik een update moet doen, maak ik een zip van de volledige klantdir, en mocht er kwa programma of database problemen voordoen, hoef ik die maar te unzippen om de oude situatie te herstellen voor deze ene klant.

Nu wil ik kijken of ik zo'n zelfde situatie ook kan maken met MariaDB.

Wat ik met googleen tot nu toe zie is dat dit niet kan. De database is globaal. Tabellen kunnen eventueel een andere plek krijgen, maar is nog steeds globaal voor alle instances.

Is er misschien toch een andere manier om toch een .\datadir per software instance te gebruiken? Dat <whatever>\klant1
<whatever>\klant2
<whatever>\klant3
<whatever>\test_klant1
Totaal geen weet van elkaar hebben en gemaakt en verplaatst kunnen worden naar gelieve.

OS omgeving: windows 10
Database: MariaDb 10.5
Ontwikkel omgeving: Delphi 10.3

Alle reacties


Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
Je database is geen file system ondanks dat de files wel op disk staan. In MariaDB / MySQL moet je op een andere manier omgaan met kopiëren van de data. Of wel via mysql dump files en die importeren in een nieuwe database of via andere backup tools.

Driving a cadillac in a fool's parade.


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
MariaDB draait als een service. De databases staan dus niet in de map van de software.
Elke klant eigen inlog en ze zien dan niet de andere databases (mits je dat goed instelt).

Aangezien je Delphi gebruikt, kijk eens naar FirebirdSQL.

[ Voor 23% gewijzigd door DJMaze op 10-11-2020 08:49 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • MSteverink
  • Registratie: Juni 2004
  • Laatst online: 24-09 15:32
Je kunt meerdere instances van MariaDB tegelijkertijd draaien. Als je drie klanten hebt kun je dit ook serieus overwegen, als het er 100 zijn is dit geen realistisch scenario.
Je kunt MariaDB als interface (storage engine) gebruiken voor CSV-bestanden. Wat het backupen, editen etc. wel gemakkelijker maakt. Maar je zult bij het terugzetten van de bestanden wel, heel kort, de complete database voor alle klanten moeten stoppen. En, misschien wel belangrijker, dit is niet gedocumenteerd, dus voor eigen risico en misschien niet gewenst in een professionele context.
Als derde kun je SQLite overwegen als database.

Welk probleem wil je oplossen? Wat is er niet goed aan je huidige situatie?

Acties:
  • 0 Henk 'm!

  • marque1968
  • Registratie: November 2012
  • Laatst online: 27-07 11:06
Ik heb gekozen voor MariaDB omdat ik nu mijzelf weer aan het bijspijkeren ben met Delphi met de Community Edition. Later wil ik dit misschien ook in andere talen (Python/Php/Java) gaan doen. Dat zou dan weer hetzelfde programma zijn op een andere manier. Dus vandaar een cross-platform mogelijkheid. En volgens mijn komt MariaDB daar goed bij uit de bus.

Ik begrijp dat ik via de inlog van de klanten een andere environment kan opstarten voor de klant, maar ik zit ook nog zelf op de server en moet dus de databases voor alle klanten beheersen.

En ik ben echt geen fan van TopSpeed database, maar in dit geval is het feit dat ze het als een soort dBase in de directory zetten heel handig en snel in gebruik.

Ik kan natuurlijk een centrale locatie maken en per klant een eigen database binnen MariaDB maken en dan gewoon binnen mijn eigen inlog schakelen tussen databases. Dat is natuurlijk de manier waarop het moet, maar ik hoopte op de mogelijkheid op een andere insteek (sneller in gebruik, ongeacht of ik die optie uiteindelijk gebruik)

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ik kan natuurlijk een centrale locatie maken en per klant een eigen database binnen MariaDB maken en dan gewoon binnen mijn eigen inlog schakelen tussen databases. Dat is natuurlijk de manier waarop het moet, maar ik hoopte op de mogelijkheid op een andere insteek (sneller in gebruik, ongeacht of ik die optie uiteindelijk gebruik)
Dat is toch juist veruit de eenvoudigste manier :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • marque1968
  • Registratie: November 2012
  • Laatst online: 27-07 11:06
MSteverink schreef op dinsdag 10 november 2020 @ 13:34:
Je kunt meerdere instances van MariaDB tegelijkertijd draaien. Als je drie klanten hebt kun je dit ook serieus overwegen, als het er 100 zijn is dit geen realistisch scenario.
Het is maar een vingeroefening wat ik nu aan het doen ben, maar ik baseer me op een systeem met tegen de 100 accounts die inloggen, dus inderdaad. Lijkt me geen goed idee daarvoor. Echter, ik zal er wel eens naar kijken, want voor administrator zaken kan dat juist wel weer interessant zijn.
Als derde kun je SQLite overwegen als database.

Welk probleem wil je oplossen? Wat is er niet goed aan je huidige situatie?
SQLite is inderdaad een optie, is ook multi platform. Maar ik geloof dat een 'echte' SQL in dit geval toch beter is.

En het op te lossen probleem is misschien meer gewenning. Nu moet ik wat aanpassen/proberen met de database/programmatuur. Dan is het voor mij een 7zip d:\prognaam\klantnaam\*.TPS voldoende. Een minuut of wat later ben ik bezig met mijn test. Werkt het toch niet dan is het -UNZIP en de oude situatie is weer terug. En terwijl ik daarmee bezig ben, kan ik ook even voor een andere klant andere aanpassingen doen, zonder ook in de war te raken waar ik mee bezig ben.

En zoals gezegd, ik snap de best practice oplossing, maar was benieuwd of ik binnen MariaDB een dergelijke oplossing ook mogelijk was.

Acties:
  • 0 Henk 'm!

  • marque1968
  • Registratie: November 2012
  • Laatst online: 27-07 11:06
drm schreef op dinsdag 10 november 2020 @ 13:42:
[...]
Dat is toch juist veruit de eenvoudigste manier :?
Ja/Nee.

Wat er ook bij klant X mis gaat, klant Y merkt er nu niets van. Al crasht de hele database omgeving bij X.
(maar ik zie dit ook bij verschillende inlogs ook niet echt fout gaan)

Nu is de login vast in het programma en de lokale database wordt gebruikt. Bij SQL moet dus een config file o.i.d. bepalen wat de inlog en vooral database name is. Wordt er iets rucksicht loss gekopieerd, dan zit men binnen het programma in de verkeerde database te werken en zit ineens Klant X de reconds van Klant Y aan te passen.

Maar nogmaals, de officiele manier, lijkt mij ook het beste. Ik was gewoon aan het kijken of het überhaupt mogelijk was.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Ik snap eerlijk gezegd niet waarom je niet gewoon 1 database hebt met daarin een database/schema per klant. Doet precies wat je wil, en je kunt heel simpel een export van een klant maken en deze gebruiken voor tests.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • marque1968
  • Registratie: November 2012
  • Laatst online: 27-07 11:06
Zie boven

Acties:
  • +2 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Een database crashed niet zomaar. Honderden bedrijven werken zo. Waarom zou jij een uitzondering zijn?

[ Voor 8% gewijzigd door Hydra op 10-11-2020 15:26 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
marque1968 schreef op dinsdag 10 november 2020 @ 13:36:
Later wil ik dit misschien ook in andere talen (Python/Php/Java) gaan doen.
Zoals ik al zei. Check FirebirdSQL.
Die kan ook meer voor jou dan MariaDB/MySQL.

Aan de andere kant. Als je een cluster wil bouwen is het niet geschikt.

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 18:01

DukeBox

loves wheat smoothies

Zoals eerder genoemd meerdere instances draaien is de enige optie als je het gescheiden wilt houden. Eventueel zou je dockers kunnen gebruiken dat maakt het allemaal nog makkelijker.

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 18:18
DukeBox schreef op dinsdag 10 november 2020 @ 15:50:
Zoals eerder genoemd meerdere instances draaien is de enige optie als je het gescheiden wilt houden. Eventueel zou je dockers kunnen gebruiken dat maakt het allemaal nog makkelijker.
nou enige optie...

De meeste Databases bieden mogelijkheden om voor elke klant een eigen database aan te maken en dan timmer je het met users af: alleen user account 'klant1' mag in database 'klant1'

Er zijn ook databases (PostgreSQL, anderen) die werken met schema's. Een database bestaat uit 1 of meer schema's en elk schema bevat tabellen. Ook dan kun je rechten per klant per schema toekennen.

Afhankelijk van de hoeveelheid data is TopSpeed (of sqlite) ook helemaal niet zo'n gek idee overigens. Maar die filebases databases zijn vaak niet zo goed in meerdere gebruikers tegelijk.

Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 18:01

DukeBox

loves wheat smoothies

Wel in het geval je het fysiek gescheiden wilt hebben.

Maar inderdaad, alles in 1 database (instance) met rechten gescheiden is op zich niet minder veilig als je het goed inricht. Je hebt ook minder overhead dus kan performance technisch ook de betere keuze zijn.

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • marque1968
  • Registratie: November 2012
  • Laatst online: 27-07 11:06
Hydra schreef op dinsdag 10 november 2020 @ 15:26:
[...]


Een database crashed niet zomaar. Honderden bedrijven werken zo. Waarom zou jij een uitzondering zijn?
Ik doelde meer op het feit dat ik gewoon wilde kijken OF het kan. Zoals ik in mijn OP al schresf, ik verwachte niet dat het kon, maar wilde weten of het überhaupt mogelijk is

Acties:
  • +3 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
marque1968 schreef op dinsdag 10 november 2020 @ 18:15:
Ik doelde meer op het feit dat ik gewoon wilde kijken OF het kan. Zoals ik in mijn OP al schresf, ik verwachte niet dat het kon, maar wilde weten of het überhaupt mogelijk is
Alles kan, maar soms is het gewoon een slecht idee, zoals hier. :)

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Oogje
  • Registratie: Oktober 2003
  • Niet online
Hydra schreef op dinsdag 10 november 2020 @ 15:26:
[...]


Een database crashed niet zomaar. Honderden bedrijven werken zo. Waarom zou jij een uitzondering zijn?
En als je daar wel op wil voorsorteren kun je met een active-passive opstelling gaan werken bv.

Any errors in spelling, tact, or fact are transmission errors.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Oogje schreef op woensdag 11 november 2020 @ 07:58:
En als je daar wel op wil voorsorteren kun je met een active-passive opstelling gaan werken bv.
Sowieso heeft 'ie alles op 1 node staan. Dat er een flinke bug in MariaDB zit, acht ik niet veel groter dan dat die node gewoon crashed. Ik vind eerlijk gezegd dit soort shared hosting sowieso niet echt meer van deze tijd.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Het is toch best wel grappig hoe iedereen de vraag hier leest... Zo 100% letterlijk.

Tuurlijk je moet het ergens ook wel letterlijk opvatten, alleen ik heb deels ook het gevoel dat TS geholpen is door er gewoon eens anders naar te kijken.

Je zoekt niet per se naar een file-based database.
Maar je zoekt gewoon naar een super-simpele backup en restore procedure. En als je daarop gaat zoeken, dan valt er ook met mariadb wel een .cmd bestandje te maken wat hetzelfde gemak evenaart.

Als je gewoon een dbase per klant hebt dan is het enkel gewoon nog googlen naar een goede backup-restore procedure en dan kan je exact wat je nu kan alleen de commando's zullen net iets anders zijn

Acties:
  • +1 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
Gomez12 schreef op woensdag 11 november 2020 @ 08:54:
Het is toch best wel grappig hoe iedereen de vraag hier leest... Zo 100% letterlijk.

Tuurlijk je moet het ergens ook wel letterlijk opvatten, alleen ik heb deels ook het gevoel dat TS geholpen is door er gewoon eens anders naar te kijken.

Je zoekt niet per se naar een file-based database.
Maar je zoekt gewoon naar een super-simpele backup en restore procedure. En als je daarop gaat zoeken, dan valt er ook met mariadb wel een .cmd bestandje te maken wat hetzelfde gemak evenaart.

Als je gewoon een dbase per klant hebt dan is het enkel gewoon nog googlen naar een goede backup-restore procedure en dan kan je exact wat je nu kan alleen de commando's zullen net iets anders zijn
Ik wil niet heel bijdehand zijn, maar lees mijn eerste opmerking nog eens ;)

Driving a cadillac in a fool's parade.


Acties:
  • +1 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Gomez12 schreef op woensdag 11 november 2020 @ 08:54:
Het is toch best wel grappig hoe iedereen de vraag hier leest... Zo 100% letterlijk.
Misschien even lezen wat 'iedereen' hier schrijft?

https://niels.nu

Pagina: 1