Quelle firebase database intégrée capable de gérer 100 millions d’enregistrements dispose d’une API C ou C ++ efficace

Je recherche un moteur de firebase database multiplateforme capable de gérer des bases de données contenant des centaines de millions d’enregistrements sans dégrader gravement les performances des requêtes. Il doit avoir une API C ou C ++ qui permettra une construction facile et rapide des enregistrements et l’parsing des données renvoyées.

Les produits pour lesquels les données doivent être traduites en chaînes et uniquement pour être insérées dans la firebase database sont fortement découragés. Les utilisateurs techniques stockant des éléments tels que les adresses IP ne veulent pas ou n’ont pas besoin de cette surcharge. Il s’agit d’un critère très important. Par conséquent, si vous souhaitez faire référence à des produits, indiquez clairement comment ils proposent une API directe. Je ne souhaite pas être impoli, mais je peux utiliser Google. Supposons que j’ai trouvé la plupart des produits grand public et je vous le demande, car il est souvent difficile de déterminer quelle API directe ils proposent, plutôt que de simplement utiliser un langage C autour de SQL.

Il n’est pas nécessaire qu’il s’agisse d’un SGBDR – une simple approche ISAM axée sur les enregistrements serait suffisante.

Bien que le besoin principal concerne une firebase database mono-utilisateur, il est probable que l’utilisation future d’un fichier ou d’un serveur partagé soit étendue.

L’access au code source, qu’il soit open source ou via une licence, est hautement souhaitable si la firebase database provient d’une petite entreprise. Ce ne doit pas être GPL ou LGPL.

    vous pourriez envisager C-Tree par FairCom – dites-leur que je vous ai envoyé 😉

    je suis l’auteur de hamsterdb.

    le cabinet de tokyo et berkeleydb devraient bien fonctionner. hamsterdb va certainement fonctionner. C’est une API C simple, open source, indépendante de la plate-forme, très rapide et testée avec des bases de données pouvant atteindre plusieurs centaines de Go et des centaines de millions d’éléments.

    Si vous êtes prêt à évaluer et que vous avez besoin d’aide, envoyez-moi un mail (formulaire de contact sur hamsterdb.com) – je vous aiderai dans la mesure de mes moyens!

    au revoir Christoph

    Vous n’avez pas mentionné la plate-forme sur laquelle vous vous trouvez, mais si Windows n’est que correct, examinez le moteur de stockage extensible (anciennement Jet Blue), le moteur de table ISAM intégré inclus dans Windows 2000 et versions ultérieures. Il est utilisé pour Active Directory, Exchange et d’autres composants internes, optimisés pour un petit nombre de tables volumineuses.

    Il a une interface en C et supporte nativement les types de données binarys. Il prend en charge les index , les transactions et utilise un journal pour assurer l’atomicité et la durabilité. Il n’y a pas de langage de requête; vous devez travailler directement avec les tables et les index .

    ESE n’aime pas ouvrir les fichiers sur un réseau et ne prend pas en charge le partage d’une firebase database via le partage de fichiers. Vous aurez du mal à trouver un moteur de firebase database prenant en charge le partage via le partage de fichiers. Le moteur de firebase database Access Jet (AKA Jet Red, base de code totalement séparée) est le seul que je connaisse, et il est notoire pour la corruption de fichiers sur le réseau, en particulier s’ils sont volumineux (> 100 Mo).

    Quel que soit le moteur utilisé, vous devrez probablement implémenter vous-même les fonctions d’utilisation partagée dans votre propre processus de serveur de réseau ou utiliser un moteur de firebase database distinct.

    Pour ceux qui trouveront cette page quelques années plus tard, j’utilise désormais LevelDB avec un échafaudage au-dessus pour append l’indexation multiple nécessaire. Cela convient particulièrement aux bases de données intégrées sur iOS. J’ai fini par écrire un livre à ce sujet! (Premiers pas avec LevelDB, de Packt fin 2013).

    Une option pourrait être Firebird . Il offre à la fois un produit basé sur serveur et un produit intégré.

    Il est également open source et il existe un grand nombre de fournisseurs pour tous les types de langues.

    Je pense que ce que vous recherchez, c’est BerkeleyDB: http://www.oracle.com/technology/products/berkeley-db/db/index.html

    Peu importe que ce soit Oracle, la licence soit gratuite et open-source – si vous redissortingbuez votre logiciel qui utilise BerkeleyDB, vous devez également rendre votre source disponible – ou acheter une licence.

    Il ne fournit pas de support SQL, mais plutôt des recherches directes (via une structure b-tree ou hash-table, selon ce qui convient le mieux à vos besoins). Il est extrêmement fiable, rapide, ACID, prend en charge la réplication intégrée, etc.

    Voici une petite citation de la page à laquelle je me réfère ci-dessus, qui énumère quelques caractéristiques:

    Stockage de données

    Berkeley DB stocke les données rapidement et facilement sans la surcharge que l’on trouve dans les autres bases de données. Berkeley DB est une bibliothèque C qui s’exécute dans le même processus que votre application, ce qui évite les retards de communication entre processus liés à l’utilisation d’un serveur de firebase database distant. Les caches partagés conservent en mémoire les données les plus actives, évitant ainsi des access coûteux au disque.

    • Stockage de données local en cours de processus
    • Format de données natif d’application, indépendant du schéma
    • Extraction indexée et séquentielle (Btree, Queue, Recno, Hash)
    • Plusieurs processus par application et plusieurs threads par processus
    • Verrouillage fin et configurable pour les systèmes hautement concurrents
    • Contrôle de simultanéité multi-version (MVCC)
    • Prise en charge des index secondaires
    • En mémoire, sur disque ou les deux
    • Compactage en ligne de btree
    • Récupération de l’espace disque Btree en ligne
    • Retrait des cadenas abandonnés en ligne
    • Cryptage de données sur disque (AES)
    • Enregistre jusqu’à 4 Go et des tables jusqu’à 256 To

    Mise à jour: Je viens de parcourir ce projet et de réfléchir à la question que vous avez posée: http://tokyocabinet.sourceforge.net/index.html . Il est sous LGPL, donc pas compatible avec vos ressortingctions, mais un projet intéressant à vérifier, néanmoins.

    SQLite satisferait à ces critères, à l’exception du scénario de fichier partagé éventuel à l’avenir (et pourrait même le faire si le système de fichiers réseau implémentait correctement les verrous de fichier).

    Beaucoup de bonnes solutions (telles que SQLite) ont été mentionnées. Laissez-moi en append deux, puisque vous n’avez pas besoin de SQL:

    • HamsterDB rapide, simple à utiliser, peut stocker des données binarys arbitraires. Aucune disposition pour les bases de données partagées.
    • Le module Glib HashTable semble également très intéressant et est très courant, vous ne risquerez donc pas d’entrer dans une impasse. De l’autre côté, je ne suis pas sûr qu’il existe un moyen simple de stocker la firebase database sur le disque, c’est surtout pour les éléments en mémoire.

    J’ai testé les deux sur des projets de plusieurs millions de disques.

    SQLite a tendance à être la première option. Il ne stocke pas les données sous forme de chaînes mais je pense que vous devez créer une commande SQL pour effectuer l’insertion et cette commande créera une chaîne.

    BerkeleyDB est un produit bien conçu si vous n’avez pas besoin d’une relation DB. Je n’ai aucune idée du prix facturé par Oracle et de la nécessité d’une licence pour votre application.

    Personnellement, je considérerais pourquoi vous avez certaines de vos exigences. Avez-vous déjà effectué des tests pour vérifier l’exigence d’insertion directe dans la firebase database? On dirait que vous pourriez prendre quelques heures pour écrire un wrapper qui convertit l’API de votre choix en SQL et ensuite voir si SQLite, MySql, … répondent à vos besoins en matière de vitesse.

    Comme vous connaissez Fairtree, vous connaissez probablement aussi Raima RDM.

    Il est devenu open source il y a quelques années, puis dbstar a prétendu avoir acquis le droit d’auteur. Cela semble discutable cependant. À la lecture de la licence d’origine de Raima, cela ne semble pas possible. Bien sûr, il est possible de restr avec la version de code originale. C’est assez rare, mais j’en ai une copie archivée.

    Il y avait un produit appelé b-sortingeve mais je ne suis pas sûr si le code source était inclus. Je pense qu’il a été interrompu. Le seul moteur de firebase database que je connaisse avec une orientation ISAM est c-tree.