Manchmal muss man Kunden aber zu ihrem Glück zwingen. Du kannst ja nicht in ein Autohaus gehen und sagen:"Ich will ein Auto, aber auf Tanken hab ich kein Bock". Geht nun mal nicht.
oder auch "Ich will keine Wartungsintervalle einhalten"... "Klar, aber wundern Sie sich nicht, wenn das Auto nicht lange hält"
So ist es auch hier: Ein normaler Anwender-PC, auf dem sich die
DB befindet, mag ja auf den ersten Blick kostengünstig und bequem sein, aber lass doch einfach mal eins der user-GAUe passieren:
-Virus
-Festplatte im Eimer
-Aus Versehen Neustart
etc.
Ich würde zumindest *einen* PC etwas robuster ausstatten (also nicht die billig-HD nehmen, sondern vielleicht SCSI), das Software-Raid von Windows aktivieren (oder gleich ne kleine Raid-Karte) und den ohne Grafikschnickschnack in die Ecke stellen. Das muss nun wirklich kein Server sein, nur stabil muss er nun mal sein. Darauf einen wartungsarmen
MSSQL (mein Favorit, aber
FB und PostgreSQL sind wohl gleichwertig) draufpacken und fertig. Und wenn die
DB mal hängt (was immer mal vorkommen kann), dann wird der Resetknopf gedrückt und gut ist: Bei richtigen
DB (also *nicht*
mysql) ist es nämlich so, das die
DB garantiert nicht zerballert ist, bloss weil man den Resetknopf gedrückt hat. Beim Neustart wird die
DB ganz brav geladen und der Zustand vor dem Rest wieder hergestellt. Dann noch ein paar Maintenance-Jobs per Timer (checkpoint setzen, backup etc.) und schon haben die ihre Ruhe. Du musst dann nur gelegentlich per Admintool nachschauen, ob alles ok ist.
Soweit ich das weiss (bitte korrigieren) ist ein sichere Transaktionskapselung mit 'Embedded Servern' doch gar nicht möglich, weil eben viele Server auf eine Datei zugreifen. Das geht nie 100% gut.
Du *musst* irgendwo eine zentrale Serverinstanz installieren, die sich auf die
DB setzt und sie 100% wasserdicht abschottet und eine zentrale Transaktionskapselung vornimmt.
Imho geht das nicht mit clientseitigen DBs (siehe
Access).
Ich sage meinen Kunden: Kaufen Sie sich einen zusätzlichen PC, zur Not packen wir den ins Budget, wenn der Financial Controller mauert (was die gerne tun). Der Wert (max 1000 Euronen) entspricht 1-2 Tagessätzen, und die verbringt man allemal damit, eine
DB-Havarie aus o.g. Gründen wieder zu korrigieren.