2011-04-12 5 views
5

merci beaucoup d'avance pour prendre le temps de regarder ma question.Une base de données intégrée non relationnelle avec une licence de logiciel libre permissive?

(je suis au courant de cette question Nonrelational Databases for C++, mais mes besoins sont un peu différent et il n'a qu'une seule réponse.)

Je développe une bibliothèque C++ commerciale qui doit, entre autres, persistent des messages. Je voudrais éviter de réinventer la roue en écrivant mon propre SGBD. Malheureusement, j'ai les critères restrictifs suivants:

  1. Il doit être utilisable depuis C++ - J'écris une bibliothèque C++. Les liaisons sont potentiellement acceptables si le niveau d'effort pour les faire fonctionner n'est pas trop élevé.
  2. J'ai besoin d'une base de données intégrée. Stand-alone ne fonctionnera pas.
  3. Je veux éviter une base de données relationnelle. En plus des inquiétudes concernant les frais généraux de performance, il y a des politiques techniques indépendantes de ma volonté en tant que développeur qui découragent une base de données relationnelle.
  4. J'ai besoin d'une licence de logiciel libre permissive. Il sera difficile d'acheter des licences, mais le client ne veut pas donner sa source.
  5. Je voudrais une solution qui a été établie (depuis au moins un peu, au-delà de la phase expérimentale, a été utilisée par plusieurs projets).

Malheureusement, les deux vont à des choix ne fonctionnent pas en raison de ce qui précède: -SQLite est relationnelle -BerkeleyDB est GPL ou commerciale

Encore une fois, merci pour toute aide.

+2

Je contesterais le # 3. Êtes-vous certain que votre application a des caractéristiques qui rendent les performances dans un système relationnel plus lent que dans un système non relationnel? – Reinderien

+1

Non. Je soupçonne un coût non négligeable, et j'ai des preuves que ce sera le cas, mais nous le prototypons pour être sûr. Le plus gros problème est la perception étrange du client que les bases de données relationnelles sont en quelque sorte «mauvaises». – user343424

Répondre

6

Utilisez le mode SQLite in b-tree. Domaine public. Évite la politique. Laissez-vous contourner les problèmes politiques en évitant l'interface SQL pour les chemins critiques en termes de performance, et en utilisant éventuellement le chemin de l'analyseur SQL pour les requêtes qui ne sont pas sur le chemin critique.

Questions connexes