Welche Open-Source-Datenbank ist die beste Option für ein Buchhaltungssystem? [abgeschlossen

StackOverflow https://stackoverflow.com/questions/411976

Frage

Ich bin in den frühen Phasen der Planung und Gestaltung einer benutzerdefinierten Buchhaltungsanwendung für meine Firma. Mein Ziel ist es, eine Open -Source -relationale Datenbank für den Datenspeicherbereich zu verwenden, und ich bin mir zwei solide Datenbanken bekannt, die weithin unterstützt werden: MySQL und PostgreSQL.

Gibt es für ein System, das Transaktionen, gespeicherte Verfahren, Funktionen und Sicherheit erfordert, irgendwelche Meinungen darüber, welche dieser beiden Datenbanken am besten für eine Buchhaltungsanwendung geeignet sind, oder gibt es eine weitere Datenbank, die mir fehlt?

Ich bin mit MySQL und MS SQLSERVER 2005 besser vertraut, aber ich versuche aufgrund der Lizenzkosten von letzterem wegzukommen.

Lassen Sie mich hinzufügen: Dies ist kein Buchhaltungsbedarf wie QuickBooks oder Peachtree. Dies ist im Grunde ein System, das einen bestimmten Geschäftsdienst zur Verfügung stellt, den wir anbieten. Es gibt möglicherweise zwei oder drei Systeme, die diesen Bedarf gerecht werden, im sechsten Zahlenbereich vor jeder Anpassung bewertet werden und dass meine kleine Firma langfristig mit einem Verkäufer verheiratet ist. Daher bauen wir die Anwendung im eigenen Haus auf.

Auch während ich das schätze Kaufen vs. build Argument, ich möchte mich von dieser speziellen religiösen Frage entfernen, weil die Kaufstraße bereits aufgenommen wurde und der Verkäufer kläglich gescheitert ist. Manchmal müssen Sie nur den Job selbst und dieses bestimmte Projekt erledigen und garantiert es.

Vielen Dank für die bisherigen Antworten aller.

War es hilfreich?

Lösung

Es gibt vier wichtige Relationale Datenbankverwaltungssysteme für Open-Source-Datenbank, die dieser Art von Anwendung möglicherweise angemessen sind: PostgreSQL, MySQL, Firebird und Ingres. Es gibt andere Systeme wie z. Sqlite, Sie haben jedoch nicht diese Art von Architektur und sind nicht wirklich für diese Art von Arbeitsbelastung konzipiert. Es gibt einige andere Open-Source-Datenbankverwaltungssysteme dieser Art, scheinen jedoch aus irgendeinem Grund nicht stark lebensfähig zu sein, beispielsweise aus irgendeinem Grund, beispielsweise ein Mangel an offensichtlichen Anbieter-Engagement. Ein Beispiel für ein System, das diese Art von Problem hat, ist SAP-DB.

PostgreSQL Hat die beste Funktion der Open-Source-Datenbanken und Unterstützung für XA-Transaktionen, die Sie wahrscheinlich wünschen, wenn Ihre Anwendung ein dreistufiges System ist und Transaktionen der nicht trivialen Komplexität unterstützt. Insbesondere möchten Sie dies, wenn Sie Transaktionen über mehr als einen Anruf in die Datenbank durchführen möchten.

Im Laufe der Jahre wurden mehrere kommerzielle Varianten von PostgreSQL gebaut, wie z. Illustra, Grüne Pflaume und EnterprisedB. Illustra war eine kommerzielle Veröffentlichung von PostgreSQL, die anschließend von Informix gekauft wurde. GreenPlum ist eine mofifizierte Version für Data Warehousing -Anwendungen. EnterprisedB ist ein Unternehmen, das unterstützte kommerzielle Versionen von PostgreSQL mit einer serienmäßigen Software zur Verfügung stellt.

Mysql 5.x verfügt über einen Funktionssatz, der einen angemessenen Querschnitt der Funktionen unterstützt, aber nicht so merkmalreich ist wie PostgreSQL. Es hat eine weit verbreitete Mainstream-Akzeptanz und wäre die einfachste der Open-Source-Datenbankmanagementsysteme, für die qualifizierte Entwickler eingestellt werden. Obwohl ältere Versionen keine robuste Transaktionsunterstützung hatten, waren Transaktionsspeichermotoren wie InnoDb sind seit einiger Zeit verfügbar. Das aktuell Politik umgeben Die Akquisition durch Sun hat erzeugt Codegabeln Und die MySQL -Landschaft ist etwas chaotisch, mit Kontroversen über Qualitätsprobleme in der Veröffentlichung 5.1. MySQL ist jedoch bei weitem die beliebtesten und bekanntesten der Open-Source-Datenbankmanagementsysteme und die einzige mit einer signifikanten Markenerkennung außerhalb von Open-Source-Kreisen.

Feuervogel ist eine Open-Source-Version von Interbase. Zuletzt habe ich nachgesehen, es hatte keinen XA-Support, wäre aber in Ordnung, wenn Ihre Anwendung als zweistufiges Client-Server-System eingerichtet würde. Aktualisieren: Ich kann keine endgültige Spezifikation dazu finden, aber die Dokumentation zeigt, dass sie Unterstützung für das Zweiphasen-Commit hat, aber was ich finden konnte, war nicht spezifisch, ob es das XA-Protokoll unterstützte. Die Dokumentation impliziert, dass der JDBC-Treiber Unterstützung für zweiphasige Commits hat.

Eine interessante Variante dieses Systems ist Fyracle, das für ein gewisses Maß an Kompatibilität mit Oracle ausgelegt ist. Dies wurde ursprünglich für die Verwendung als Back-End zu Kompiere, der gegen Oracle gebaut und ziemlich eng mit ihm verbunden war.

Ingres ist jetzt mit einer Open-Source-Lizenz erhältlich, wurde aber von der Open-Source-Community mit einem kollektiven Gähnen begrüßt. Es ist jedoch ziemlich reichenreich und sehr ausgereift - ich kenne Leute, die 1990 Ingres -Apps gemacht haben, und es stammt aus den 1980er Jahren.

Andere Tipps

Mein Rat? Nicht. Besser einen kaufen. Leute, die mehr über Buchhaltung wissen, haben gute Pakete geschrieben, die sich bereits mit GAAP befassen. Sie haben eine größere Benutzerbasis als jemals zuvor, die Defekte schneller aufdeckt. Dies ist ein klassischer "Buy gegen Build". Es gibt keinen Wettbewerbsvorteil für Ihr Unternehmen, indem Sie ihre eigenen schreiben. Wenn Sie dies tun, weil Sie sich Sorgen über Lizenzkosten machen, würde ich sagen, dass Sie die Entwicklungszeit nicht ordnungsgemäß berücksichtigt haben. Nur so können Sie dies rechtfertigen.

Wenn Sie sich über die SQL Server -Lizenzkosten Sorgen machen, würde ich PostgreSQL First oder MySQL Zweiter als Ihre Datenbank der Wahl empfehlen.

Ich stimme stark mit Antworten von Duffymo, Tuinstoel und anderen zu. Überdenken Sie Ihren Build vs. Kaufentscheidung. Lass mich dir eine Geschichte erzählen:

Während ich in einem mittelgroßen Unternehmen (internationale,> $ 100 Mio. $/Jahr) arbeitete, beschloss der CFO, die Finanzsysteme durch Oracle Financials zu ersetzen. Nur dieses Paket stimmte nicht genau mit den von dieser Firma verwendeten Buchhaltungsverfahren überein.

Daher stellte das CFO ein Team von Vertragsprogrammierern ein und zahlte sie, um Oracle Financials an die bevorzugten Rechnungslegungspraktiken anzupassen. Sie versenkte 12 Monate Zeit, programmiererlöhne von 1 Million US -Dollar sowie die anfänglichen Kosten der Software, nur um das Buchhaltungssystem zu duplizieren, das sie ersetzen wollten.

Sie sagte, wenn sie es noch einmal tun müsste, würde sie das kommerzielle Paket kaufen, aber die Buchhaltungsgewohnheiten des Unternehmens an die von der Software unterstützten Ausfälle anpassen. Das wäre weitaus einfacher, schneller und wahrscheinlicher, dass er erfolgreich ist.

Berücksichtigen Sie also die Kosten für den Aufbau Ihres eigenen benutzerdefinierten Pakets. Berücksichtigen Sie auch die laufenden Kosten für Ihr Unternehmen für Wartung, Debuggen und Verbesserung für diese Software. Auch wenn ein sechsstelliges kommerzielles Paket kaufen, wird dies wahrscheinlich günstiger sein, als die Programmierer für die Entwicklung und Aufrechterhaltung eines solchen Systems zu bezahlen.


Um Ihre angegebene Frage direkter zu beantworten, denke ich nicht, dass es einen signifikanten Unterschied zwischen PostgreSQL und MySQL gibt, der für Ihr Projekt relevant ist. Da Sie sich mit MySQL wohl fühlen, können Sie auch damit zusammenarbeiten.

Ich möchte eine obligatorische Erinnerung anbieten, keine ungenauen Datentypen wie zu verwenden FLOAT oder DOUBLE PRECISION Für Finanzdaten.

Zum irgendein Anwendung, die eine Open-Source-Datenbank verwenden möchte, ist die zweifache Antwort nach Postgres. Es ist viel "unternehmerisch" als MySQL, ganz zu schweigen davon, dass es dem SQL-Standard viel besser folgt. MySQL hat sich mit seinen späteren Versionen stark verbessert, aber Postgres schlägt es in jeder Kategorie immer noch.

Es gibt Open Source -kostenlose Buchhaltungssysteme. Wie Osfinancials. Ich kann wirklich nicht verstehen, warum Sie Ihr eigenes System erstellen möchten?

Für Ihre Bewerbung ist es nicht wirklich wichtig. Alles von SQLite über MySQL bis Postgres würde wahrscheinlich gut funktionieren. Wählen Sie den, mit dem Sie am besten vertraut sind.

Wenn Sie mit MySQL vertraut sind, verwenden Sie es. Wählen Sie jedoch die richtige Datenbank -Engine anstelle von Standard -MyISAM aus

Liste der Speichermotoren

Ganz ehrlich, irgendein von den üblichen Verdächtigen werden die Arbeit erledigen. Die Aufrechterhaltung des Kontendiagramms und zugehörigen Datentabellen ist das Root -Problem, das das gesamte relationale Modell trug. Wenn Sie über die Ansicht der allgemeinen Zeitschrift eines Buchhaltungssystems nachdenken, sind alle Sie alle Sie haben ist das Diagramm-Konto und das allgemeine Journal, das aus Transaktionsnummer, Datum, Beschreibung, Belastungskonto und Betrag, Kreditkonto und Betrag besteht. Alles andere, was Sie tun, ist eine Auswahl.

Trotzdem gibt es so viele perfekt ausreichende, gut getestete und akzeptierte Finanzpakete, einschließlich Open-Source-kostenloser (wie in Bier-) Versionen, dass ich meine, wenn Sie es für ein Etude, ein Studienprojekt, meinen, meins, meine, ich setzen meine Bemühungen zum Googeln und Auswahl eines.

Ich habe dein Update gesehen. Die Sache ist, dies ist ein Problem, das hauptsächlich durch nicht funktionierende Anforderungen bestimmt wird. Wirst du die Datenbank über mehr als einen Server verteilen? Wie viel Ladung erwarten Sie? Transaktionen pro Sekunde oder Transaktionen pro Tag? Ich habe in den letzten Jahren Systeme um beide Jahre gebaut, und es handelt sich normalerweise um Zuverlässigkeits- und Avilierbarkeitsanforderungen, die am entscheidendsten sind: PostgreSQL befasst sich mit gleichzeitigen Aktualisierungen einer einzelnen Zeile effektiver, indem sie die Zeilenatomizität durchsetzen und gleichzeitige Aktualisierungen serialisieren. Auf der anderen Seite scheint MySQL besser mit wirklich großen Datenbanken zu tun. Eine dritte Frage ist jedoch die Backup-einer von ihnen (ich erinnere mich nicht, welches momentan nicht) mehr oder weniger erfordert eine gewisse Ausfallzeit für die Sicherung.

Für eine interne webbasierte Buchhaltungsanwendung sind Sie möglicherweise besser mit Gemstone als kostenlose, aber nicht als Open-Source-Objektdatenbank und als Seaside als Web-Framework. Außerdem als Glas bekannt.

Für eine interne Anwendung werden Sie im Entwickleraufwand begrenzt sein. Gemstone als SmallTalk -Bild bietet bei weitem die beste Produktivität des Entwicklers. Die Unterstützung für Migration von Objekten beim Ändern ihrer Definition ermöglicht eine reale iterative Entwicklung. Seaside ersetzt Vorlagen durch eine gut gestaltete domänenspezifische Sprache zum Erstellen von Webanwendungen.

ich baue Buchhaltungssoftware auf PostgreSQL. Es funktioniert sehr gut. Ich würde es sehr empfehlen. Tatsächlich können Sie in Betracht ziehen, mit uns zusammenzuarbeiten, um unser Projekt zu verbessern und es als Ausgangspunkt zu verwenden.

Es gibt insbesondere ein paar Gründe:

  1. Hören/Benachrichtigungen gibt Ihnen die Möglichkeit, andere Programme in Ihre Buchhaltungsdb zu versorgen, wenn sich etwas ändert, ohne dass die Tische abseits so oft überprüft werden müssen.
  2. Wir haben bei den komplexesten Abfragen eine extrem gute Leistung gefunden.

Firebird und Ingres geben Ihnen eine sehr steinlösliche relationale Lösung. MySQL Ich würde nicht empfehlen, weil Sie wirklich alles an eine App binden, die an die DB schreiben kann (SQL -Modus -Suppe bedeutet, dass die Beziehungen im Grunde eine private API anstelle der öffentlichen API sind, die sie in PostgreSQL, Firebird und Ingres) und) und in Inges) und in den Dies bedeutet weniger Flexibilität in der Straße.

Mit PostgreSQL erhalten Sie jedoch eine erstklassige, erweiterbare Entwicklungsplattform in einer Box. Entwicklungstempo ist hoch. Es ist felsig. Die erweiterten Funktionen sind sehr hilfreich. Sie werden nicht enttäuscht sein. Wir waren nicht.

Wenn dies eine Desktop -Anwendung ist, möchten Sie sich möglicherweise SQLite ansehen. Es ist sehr bekannt, gemeinfrei und nicht besonders schwer zu arbeiten.

Da du nicht tust brauchen Speichern Sie die Verfahren, nehmen Sie dies von Ihrer Liste ab.

Sie werden viel glücklicher sein, Geschäftslogik in Code zu setzen, nicht in der Datenbank. Wenn Sie die Chance haben, "sauber" zu beginnen, verwenden Sie die Datenbank für das, was am sinnvollsten ist - Persistenz nicht verarbeitet.

Sobald Sie diese Entscheidung getroffen haben, verschwinden die subtilen Unterschiede zwischen MySQL und PostgreSQL. Beide sind relationale Motoren, die nahezu identische SQL verarbeiten. Konzentrieren Sie sich auf die Dinge, die sie am besten können.

Empfehlung: Machen Sie Ihre Anwendung unabhängig von Datenbankmustern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top