# OrientDB

OrientDB est un logiciel de système de gestion de base de données NoSQL open source écrit en Java.
C’est une base de données multi-modèles, prenant en charge les graphes, documents, clé/valeur, et les modèles objet mais les relations sont gérées comme des bases de données orientées graphes avec des connexions directes entre les enregistrements. Il prend en charge les modes sans schéma, avec schéma complet et schéma mixte. Il a un système de profilage avec un niveau de sécurité élevé basé sur les utilisateurs et les fonctions et prend en charge les requêtes avec Gremlin ainsi qu’avec SQL étendu pour parcourir le graphique. OrientDB utilise plusieurs mécanismes d’indexation basés sur B-tree et Extendible hashing le dernier d'entre eux est connu comme « hash index », il est prévu de mettre en œuvre les index basés sur LSM-tree (en) et Fractal tree index (en). Chaque enregistrement a une clé de substitution qui indique la position de l’enregistrement à l’intérieur de la liste Array, les liens entre les enregistrements sont conservés en tant que valeur unique de la position de l’enregistrement stockée à l’intérieur de la référence ou comme B-tree des positions d’enregistrement (enregistrement appelés ID ou RID) qui permettent des parcours rapide (avec complexité O(1) ) d’une à plusieurs relations et l’ajout/suppression rapide de nouveaux liens. OrientDB est la base de données orientée graphes la plus populaire selon le classement de base de données orientées graphes DB-Engines.
Le développement d’OrientDB repose encore sur une communauté open source dirigée par OrientDB SARL créée par son créateur original Luca Garulli. Le projet utilise GitHub pour gérer les sources, les collaborateurs et le contrôle de version, Google Group et Stack Overflow pour fournir une assistance gratuite aux utilisateurs dans le monde entier. OrientDB offre également un cours gratuit Udemy pour ceux qui espèrent apprendre les bases et commencer avec OrientDB.

## Moteur

OrientDB est construit avec un moteur graphe/document multi-modèles. OrientDB est ressenti comme une base de données de graphes tout d’abord, mais il n’y a aucune raison que la base de données clé-valeur ne puisse être utilisée d’elle-même. Tandis qu’OrientDB inclut une couche SQL, le soutien aux arcs signifie que ceux-ci peuvent être utilisés pour parcourir les relations plutôt que d’employer une déclaration JOIN. OrientDB gère chaque dossier / document comme un objet et le lien entre les objets / documents ne se fait pas par le biais de références, c’est une liaison directe (enregistrement d’un pointeur vers l’objet). Cela conduit à une récupération rapide de données reliées par rapport aux jointures dans un SGBDR.

## Éditions et licences

OrientDB Community Edition est gratuite pour toute utilisation (licence Apache 2). Le logiciel open source repose sur une communauté de développeurs. Des fonctionnalités telles que l’échelle horizontale, la tolérance, le clustering, le sharding, et la réplication ne sont pas désactivées dans OrientDB Community Edition.
OrientDB Enterprise Edition est l’extension commerciale d’OrientDB Community Edition créée pour gérer des cas d’usage plus solides et exigeants. OrientDB Enterprise Edition inclut des fonctionnalités supplémentaires comme un profileur de requête, une configuration de clustering distribuée, l’enregistrement de paramètres, un moniteur direct, un téléporteur (un outil de migration) et des alertes configurables.

## Caractéristiques

* Installation rapide. OrientDB peut être installé et exécuté en moins de 60 secondes.
* Entièrement transactionnel : il prend en charge les transactions ACID garantissant que toutes les transactions des bases de données soient traitées de manière fiable et en cas d’accident, tous les documents en attente sont récupérés et sauvegardés.
* Modèle de données orienté graphe : gestion native des graphes. Entièrement compatible avec le Apache TinkerPop Gremlin (anciennement Blueprints) cadriciel open source de calcul de graphes.
* SQL : prend en charge les requêtes SQL avec des extensions pour gérer les relations sans SQL join, gère les arbres et les graphes des documents connectés.
* Technologies web : prise en charge native le HTTP, le protocole RESTful, et des bibliothèques ou composants supplémentaires de JSON.
* Distribué : support complet pour réplication multimaster y compris des grappes distribués géographiquement.
* S’exécute partout : la mise en place à l’aide de Java pure lui permet d’être exécuté sur Linux, OS X, Windows, ou n’importe quel système compatible JVM .
* Incorporable : le mode local utilise la base de données sans passer par le serveur. Parfait pour les scénarios où la base de données est incorporée.
* Licence Apache 2 : toujours gratuite pour toute utilisation. Pas de frais ou de redevances pour l’utiliser.
* Le serveur complet a un encombrement d’environ 512 MB .
* Un support commercial est disponible avec OrientDB.
* Pattern matching : introduite dans la version 2.2, la déclaration Match interroge la base de données de façon déclarative, en utilisant des filtrages.
* Les fonctionnalités de sécurité introduites dans OrientDB 2.2 fournissent un cadre extensible permettant d’ajouter des authentificateurs externes, la validation de mot de passe, l’importation LDAP des fonctions et des utilisateurs de la base de données, des capacités audit avancées et la prise en charge de syslog. OrientDB Enterprise Edition offre la prise en charge SPNEGO de l’authentification de l’ensemble du navigateur Kerberos (protocole) . Quand il s’agit de chiffrement de base de données, depuis la version 2.2, OrientDB peut chiffrer les dossiers sur le disque. Cela empêche les utilisateurs non autorisés d’accéder au contenu de la base de données ou même de contourner la sécurité OrientDB.
* Téléporteur : permet à des bases de données relationnelles d’être importées rapidement sur OrientDB en quelques étapes simples.
* Cloud ready : OrientDB peut être déployé dans le cloud et prend en charge les fournisseurs suivants : Amazon Web Services, Microsoft Azure, Cloud Qwest, Jelastic, DigitalOcean.

## Applications

* Services bancaires
* Données volumineuses
* Prévention de la fraude
* Logiciel de gestion de prêt (Floify)
* Maîtrise de la gestion des données$^,$
* Base de données interaction humaine non-coding RNA
* Moteurs de recommandation
* Réseaux sociaux
* Systèmes de gestion du trafic

## Histoire

OrientDB a été initialement créé par Luca Garulli en 2010. Luca l’a écrit comme une réécriture Java de la couche rapide persistante de la base de données ODBMS Orient, qui fut originellement écrit en C++. Pendant les années 2012-2014 le moteur de stockage a été réaménagé par Andrey Lomakin. Il a obtenu le nouveau nom « plocal » qui signifie « paginated local ». Ce nom implique que le nouveau moteur de stockage est basé sur le concept d’un partage de fichiers de données par pages et la page est traitée comme une seule unité atomique de changement. Depuis 2012, le projet est parrainé par LTD OrientDB (anciennement Orient Technologies LTD), une société à but lucratif avec Luca comme PDG et fondateur. En 2013 Andrey Lomakin a rejoint la société comme principal ingénieur R & D et copropriétaire de l’entreprise$^,$.
OrientDB a été couvert par les médias et fut le lauréat du prix Infoworld Bossie 2015.