Quelle base de données open source est la meilleure option pour un système lié à la comptabilité? [fermé]

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

Question

Je commence à planifier et à concevoir une application de comptabilité personnalisée pour mon entreprise. Mon objectif est d’utiliser une base de données relationnelle open source pour la partie stockage de données. Je suis conscient de l'existence de deux bases solides largement prises en charge: MySQL et PostgreSQL.

Pour un système nécessitant des transactions, des procédures stockées, des fonctions et une sécurité, existe-t-il des opinions sur lesquelles de ces deux bases de données conviendraient le mieux pour une application comptable ou existe-t-il une autre base de données qui me manque?

Je connais mieux MySQL et MS SQLServer 2005, mais j'essaie de m'éloigner de ce dernier en raison des coûts de licence.

Permettez-moi d'ajouter: Ce n'est pas un besoin de comptabilité comme Quickbooks ou Peachtree. Il s’agit essentiellement d’un système qui gère la comptabilité pour un service métier spécifique que nous fournissons. Il existe peut-être deux ou trois systèmes répondant à ce besoin, dont les prix sont compris dans la fourchette des six chiffres avant toute personnalisation, et il faudrait que ma petite entreprise soit mariée à un fournisseur à long terme. Nous construisons donc l’application en interne.

Par ailleurs, même si j'apprécie l'argument Acheter / Construire , je voudrais m'éloigner de cette question religieuse particulière, car la voie de l'achat a déjà été empruntée et le vendeur a lamentablement échoué. Parfois, vous avez juste besoin de faire le travail vous-même et ce projet et budget le justifie.

Merci pour les réponses de chacun jusqu'à présent.

Était-ce utile?

La solution

Il existe quatre principaux systèmes de gestion de base de données relationnelle open-source qui pourraient convenir à ce type d’application: Postgresql, MySQL, Firebird et Ingres. Il existe d'autres systèmes tels que SQLite , mais ils ne possèdent pas ce type d'architecture et ne sont pas vraiment conçus pour cela. type de charge de travail. Certains autres systèmes de gestion de base de données open source de ce type existent, mais ne semblent pas être fortement viables pour une raison quelconque, telle qu'un manque d'engagement apparent du fournisseur. La base de données SAP.

est un exemple de système présentant ce type de problème.

Postgresql possède le meilleur ensemble de fonctionnalités de toutes les bases de données open source et prend en charge les transactions XA. ce que vous voudrez probablement si votre application est un système à trois niveaux et prend en charge des transactions d'une complexité non triviale. En particulier, vous souhaiterez cela si vous voulez effectuer des transactions couvrant plusieurs appels à la base de données.

Plusieurs variantes commerciales de PostgreSQL ont été construites au fil des ans, telles que Illustra, Greenplum et EnterpriseDB. Illustra était une version commerciale de PostgreSQL qui a ensuite été achetée par Informix. Greenplum est une version modifiée conçue pour les applications d'entreposage de données. EnterpriseDB est une société qui fournit des versions commerciales prises en charge de PostgreSQL avec des logiciels à valeur ajoutée.

MySQL 5.x possède un ensemble de fonctionnalités qui prend en charge un nombre raisonnable de fonctionnalités, mais ce n'est pas le cas. aussi riche en fonctionnalités que PostgreSQL. Son acceptation par le grand public est plus répandue et serait le plus simple des systèmes de gestion de base de données open source pour lesquels recruter des développeurs qualifiés. Bien que les versions antérieures ne prennent pas en charge les transactions, les moteurs de stockage transactionnels tels que InnoDB sont disponibles depuis un certain temps. actuel politique qui entoure l’acquisition par Sun a généré code forks et le paysage MySQL est un peu brouillon, avec une controverse sur problèmes de qualité dans la version 5.1. Cependant, MySQL est de loin le système de gestion de base de données open source le plus populaire et le plus connu. une seule marque jouissant d'une reconnaissance significative de la marque en dehors des cercles open-source.

Firebird est une version à code source ouvert d'Interbase. La dernière fois que j'ai regardé, elle n'avait pas de support XA, mais cela irait si votre application était configurée en tant que système client-serveur à deux niveaux. Mise à jour : je ne trouve pas de spécification définitive à ce sujet, mais la documentation indique qu'elle prend en charge la validation en deux phases, mais ce que j'ai pu trouver n'était pas spécifique quant à savoir si elle prend en charge le protocole XA. . La documentation implique que le pilote JDBC prend en charge les validations en deux phases.

Une variante intéressante de ce système est Fyracle , conçu pour offrir un diplôme universitaire. de compatibilité avec Oracle. Ceci a été développé à l'origine pour être utilisé comme back-end de Compiere , qui a été construit contre Oracle et assez étroitement couplé à il.

Ingres est maintenant disponible avec une licence open source, mais a été accueilli avec un peu de collectif bâillez par la communauté open-source. Cependant, il est assez riche en fonctionnalités et très mature - je connais des gens qui utilisaient les applications INGRES en 1990 et cela remonte aux années 1980.

Autres conseils

Mon conseil? Ne pas Mieux vaut en acheter un. Les personnes qui en savent plus sur la comptabilité ont écrit de bons progiciels qui traitent déjà avec les PCGR. Ils ont une base d'utilisateurs plus importante que jamais, ce qui permettra de détecter les défauts plus rapidement. C’est un classique "achat contre construction". Votre entreprise ne présente aucun avantage concurrentiel en écrivant le leur. Si vous le faites parce que vous vous inquiétez du coût des licences, je dirais que vous n'avez pas correctement comptabilisé le temps de développement. C’est la seule façon de justifier de le faire en interne.

Cela dit, si les coûts de licence de SQL Server vous inquiètent, je vous recommanderais d'abord PostgreSQL ou MySQL ensuite, comme base de données de votre choix.

Je suis tout à fait d’accord avec les réponses de duffymo, de tuinstoel et d’autres. Revoyez votre décision d'achat par rapport à la construction. Laissez-moi vous raconter une histoire:

Alors que je travaillais pour une entreprise de taille moyenne (revenus internationaux supérieurs à 100 millions de dollars par an), le directeur financier a décidé de remplacer les systèmes financiers par Oracle Financials. Seul ce package ne correspondait pas exactement aux pratiques comptables utilisées par cette société.

Le CFO a donc engagé une équipe de programmeurs contractuels et les a payés pour adapter Oracle Financials aux pratiques comptables préférées. Elle a coulé 12 mois, un million de dollars en salaires de programmeurs, plus le coût initial du logiciel, simplement pour dupliquer le système comptable qu’ils avaient l’intention de remplacer.

Elle a dit que si elle devait le refaire, elle achèterait le progiciel commercial, mais adapterait les habitudes comptables de l'entreprise aux paramètres par défaut pris en charge par le logiciel. Ce serait beaucoup plus facile, plus rapide et plus susceptible de réussir.

Considérez donc le coût de la création de votre propre package personnalisé. Pensez également aux coûts récurrents pour votre entreprise de maintenance, de débogage et d'amélioration de ce logiciel. Même si vous achetez un forfait commercial à six chiffres, cela coûtera probablement moins cher que de payer les programmeurs pour développer et maintenir un tel système.

Pour répondre plus directement à votre question, je ne pense pas qu'il existe une différence significative entre PostgreSQL et MySQL qui soit pertinente pour votre projet. Puisque vous êtes à l’aise avec MySQL, vous pouvez aussi bien vous en servir.

Je souhaite rappeler de ne pas utiliser des types de données inexacts tels que FLOAT ou DOUBLE PRECISION pour les données financières.

Pour toutes les applications qui souhaitent utiliser une base de données open source, la réponse directe est Postgres. C’est BEAUCOUP de plus & "Prêt pour l’entreprise" que MySQL, pour ne pas dire qu'il respecte beaucoup mieux le standard SQL. MySQL s’est beaucoup amélioré avec ses dernières versions, mais Postgres le bat toujours dans toutes les catégories.

Il existe des systèmes de comptabilité gratuits open source. Comme osFinancials. Je ne comprends vraiment pas pourquoi vous voulez créer votre propre système?

Pour votre application, cela n'aura pas vraiment d'importance. Tout ce qui va de sqlite à MySQL en passant par Postgres fonctionnerait probablement très bien. Choisissez celui que vous connaissez le mieux.

Si vous connaissez bien MySQL, utilisez-le. Mais sélectionnez le moteur de base de données approprié au lieu de MyISAM par défaut

Liste des moteurs de stockage

Honnêtement, tous les suspects habituels feront le travail. La maintenance du plan comptable et des tables de données associées est le problème fondamental à l'origine de la quasi-totalité du modèle relationnel. En fait, si vous pensez à la vue du journal général d’un système comptable, vous avez uniquement le plan comptable et le journal général, composé du numéro de transaction, de la date, de la description, du compte de débit et montant, compte créditeur et montant. Tout ce que vous faites est un SELECT sur ceux-là.

Cela étant dit, il existe tant de programmes financiers parfaitement adéquats, bien testés et acceptés, y compris des versions gratuites à code ouvert (comme dans Beer), à moins que vous ne vouliez en dire autant d'une étude, d'un projet d'étude , Je mettrais mes efforts à googler et à en choisir un.

Vu votre mise à jour. Le problème, c’est que c’est un problème qui sera déterminé en grande partie par des besoins non fonctionnels. Allez-vous distribuer la base de données sur plusieurs serveurs? combien de charge attendez-vous? Transactions par seconde ou transactions par jour? J'ai construit des systèmes autour des deux ces dernières années, et ce sont les exigences les plus décisives en matière de fiabilité et de disponibilité: PostgreSQL gère plus efficacement les mises à jour simultanées d'une seule ligne, en appliquant le principe d'atomicité des lignes et en sérialisant les mises à jour simultanées. D'autre part, MySQL semble mieux gérer les bases de données très volumineuses. Encore une troisième question est la sauvegarde - l’une d’entre elles (je ne me souviens plus de celle qui est pour le moment) nécessite plus ou moins de temps de sauvegarde.

Pour une application de comptabilité Web interne, il serait peut-être préférable d'utiliser Gemstone en tant que base de données d'objets source libre mais non open source et Seaside en tant que structure Web. Autrement connu sous le nom de verre.

Pour une application interne, les efforts des développeurs vont être limités. Gemstone, en tant qu'image Smalltalk, offre de loin la meilleure productivité pour les développeurs. Sa prise en charge de la migration des objets lors du changement de définition permet un réel développement itératif. Seaside remplace les modèles par un langage spécifique au domaine bien conçu pour la création d'applications Web.

Je construis des logiciels de comptabilité sur PostgreSQL. Il fonctionne très bien. Je le recommande fortement. En fait (fiche éhontée), vous pouvez envisager de travailler avec nous pour améliorer notre projet et l'utiliser comme point de départ.

Il y a plusieurs raisons en particulier:

  1. LISTEN / NOTIFY vous donne la possibilité d’attacher d’autres programmes à votre base de données de comptabilité lorsque quelque chose change sans avoir à vérifier les tableaux de temps en temps.
  2. Nous avons constaté des performances extrêmement bonnes avec la plupart des requêtes complexes.

Firebird et Ingres vous fourniront une solution relationnelle très solide. MySQL, je ne le recommanderais pas, car vous liez tout à une seule application capable d'écrire sur la base de données (sql soup signifie que les relations sont essentiellement une API privée et non l'API publique de PostgreSQL, Firebird et Ingres), et cela signifie moins de flexibilité sur la route.

Cependant, avec PostgreSQL, vous obtenez une plate-forme de développement extensible de premier ordre dans une boîte. Le rythme de développement est élevé. C'est solide comme un roc. Les fonctionnalités avancées sont très utiles. Vous ne serez pas déçu. Nous n'avons pas été.

S'il s'agit d'une application de bureau, vous voudrez peut-être consulter SQLite. C’est très connu, dans le domaine public, et il n’est pas très difficile de travailler avec.

Etant donné que vous n'avez pas besoin de procédures stockées, supprimez-le de votre liste.

Vous serez beaucoup plus heureux en mettant la logique métier dans le code, pas dans la base de données. Si vous avez la possibilité de démarrer "nettoyer", utilisez la base de données à votre convenance: la persistance, mais pas le traitement.

Une fois que vous avez pris cette décision, les différences subtiles entre MySQL et PostgreSQL disparaissent. Les deux sont des moteurs relationnels qui gèrent un SQL presque identique. Concentrez-vous sur les choses qu'ils font le mieux.

Recommandation : votre application doit être indépendante des particularités de la base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top