پایگاه داده‌های گراف

Graph database از نودها و یال‌ها و ویژگی‌های گراف برای ذخیره اطلاعات استفاده می‌کند.
در محاسبات یک پایگاه داده گراف پایگاه داده‌ای است که از ساختار گراف‌ها برای queriesهای معنایی با گره‌ها و یال‌ها و خواص برای نشان دادن و ذخیره داده‌ها استفاده می‌کند.
اغلب دیتابیس‌های گرافی به طور طبیعی زیرمجموعه‌ای از NoSql محسوب می‌شوند و اطلاعاتشان را به صورت key-value یا دیتابیس سند محور (document-oriented database) ذخیره می‌کنند. در شرایط کلی آنها می‌توانند به عنوان دیتابیس key-value با بهره‌گیری از مفهوم روابط پذیری (relationship) در نظر گرفته شوند. روابط (Relationships) در ذخیره‌سازی داده‌ها به valuesها اجازه می‌دهند در شکل یک فورم آزاد به یکدیگر مرتبط باشند؛ و برعکس دیتابیس‌های سنتی که روابط در داخل خود دیتاها تعریف می‌شد عمل کنند. این روابط اجازه می‌دهند سلسله مراتب‌های پیچیده به سرعت طی شود و در نتیجه سرعت دسترسی و بهینه گی سیستم افزایش می‌یابد؛ که این نوع فرایند ذخیره‌سازی پیچیده در دیتابیس گرافی یکی از مشکلات عمومی عملکرد که در ذخیره‌سازی سنتی key-value صورت می‌گرفت را به نوعی حل کرده است. اکثر دیتابیس‌های گرافی همچنین مفهوم tags یا properties را نیز به معقوله پایگاه داده اضافه کردند که اساسا روابط فاقد یک اشاره گر به پرونده‌های دیگر بود.
ساختار (Structure)
دیتابیس‌های گراف بر پایه تئوری گراف‌ها (graph theory) شکل گرفته‌اند. دیتابیس‌های گراف شامل گره‌ها، خواص، یال‌ها (nodes, properties, edges) هستند.
در یک دیتابیس گراف
گره‌ها ← نشان دهنده وجودهایی از قبیل مردم، کسب و کار، حساب‌های کاربری یا هر آیتم دیگری که شخص سازنده دیتابیس ممکن هست برای پیگیری در دیتابیس نیاز داشته باشد هستند.
خواص یا ویژگی‌ها ← مربوط به اطلاعاتی هستند که به نودها "یا همون گره‌ها " مربوط است. برای مثال اگر Wikipedia یکی از نودها باشه از خواص گره خورده به اون می‌شه به website , مراجع، یا حتی w که شروع کننده کلمه Wikipedia هست. در کل خواص بسته به اینکه کدام جنبه‌های Wikipedia برای دیتابیس مد نظر هست می‌تونه متفاوت باشه.
یال‌ها ← خطوطی هستند که برای اتصال گره‌ها به یکدیگر یا به خواص مرتبطشان (Properties) استفاده می‌شوند و به طور کلی یال‌ها وظیفه نمایش روابط را در دیتابیس بر عهده دارند. همچنین بسیاری از اطلاعات مهم در یال‌هایذخیره می‌شوند. الگوهای معنادار زمانی پدیدار می‌شوند که بررسی اتصالات و ارتباطات از گره‌ها، خواص، و یال‌ها صورت می‌گیرد
ویژگی‌های دیتابیس گراف
در مقایسه با دیتابیس‌های سنتی (SQL) دیتابیس‌های گرافی اغلب در مجموعه داده‌های نسبتا مرتبط یا دیتاهایی با ارتباطات زیاد سریع‌تر و بهینه‌تر عمل می‌کنند؛ و نقشه مستقیم‌تری رو به ساختار appهای شی گرا دارند. دیتابیس‌های گراف از آنجایی که مانند SQLها به طور معمول نیاز به عملیات الحاق (join) پرهزینه ندارند به صورت طبیعی‌تری مقیاس پذیری را به مجموعه‌های داده‌های بزرگتر پیدا می‌کنند؛ و از آنجایی که آنها بستگی کمتری به ساختار خشک دیتابیس‌های سنتی دارند برای مدیریت موقت و تغییر دیتاها با طرح‌های توسعه تدریجی دلخواه مناسب‌تر هستند. در مقابل دیتابیس‌های رابطه‌ای_سنتی یا همون (relational databases) برای انجام عملیات‌های مشابه بر روی تعداد زیادی از عناصر سریع‌تر هستند. با توجه به آنچه که کفته شد. اگر قرار بود عملیات مشابه بر روی تعداد عناصر مشخص را انجام بدهید (انند سایت‌هایی با پست‌های منظم و مطالب منظم بهتر است از دیتابیس‌های سنتی SQL استفاده کنید ولی برای شرکت‌هایی که با داده‌های وسیع و مرتبط کار می‌کنند مثل (google , facebook , twitter , bing , . . .) و کارهای تحقیقاتی یا appهایی که به سرعت بیشتری در خواندن دیتاها وسیع نیاز دارند بهتر است از دیتابیس‌های noSQL استفاده کنید. همچنین دیتابیس‌های گراف قابلیت بهینه‌سازی بیشتری رو در نشان دادن دیتاهای وسیع دارند. دیتابیس‌های گراف ابزار قدرتمندی برای queriesهایی به شکل گراف هستند؛ که برای مثال می‌شه به محاسبه کوتاه‌ترین فاصله میان دو گره (node) اشاره کرد؛ که بر اساس شمارش یال‌های مرتبط میان دو گره مد نظر بدست می‌ایند. کوئری‌های به شکل گراف (graph-like queries) می‌تواند در یک Graph database در شکل طبیعی متری ورد انجام قرار بگیرد. (برای مثال گراف محاسبات قطر یا تشخیص یک جامعه)
چرا از ذخیره‌سازی در دیتابیس استفاده می‌کنیم
سئوال :
اگر تازه‌وارد عرصه دیتاها شده باشید حتما این سئوال به ذهنتون خطور می‌کند که چرا باید اصلا از یک دیتابیس استفاده کنید به جای اینکه خودتون دیتاها را اونطوری که به نظرتون بهتر و سریع‌تر برای پروژه مورد نظرتون می‌یاد ذخیره و بازیابی کنید؟
دیتابیس‌ها ویژگی‌های زیر را عموما به همراه دارند
پایداری اطلاعات و مقیاس پذیری_ Stability and scalability ← دیتابیس‌ها برای هر وضعیتی ساخته شده‌اند و عموما با رشد و مقیاس پذیری پروژه باگ یا خطایی تولید نمی‌کنند
قابلیت همزمانی_Synchronicity ← یک فایل متنی_text قابلیت نوشته شدن با چندین کاربر یا چندین process رو ندارد " پس برای مثال در یک سایت دو یا چند نفر نمی‌تونند همزمان یک کامنت بنویسند یا یک فرم را پر کنند "
قابلیت‌های کش قدرتند _caching capabilities ← که باعث صرف جویی در منابع و هزینه‌های سرور مورد نظر می‌شه و اکثر زمان‌ها دیتابیس دیتاهای مورد استفاده را در داخل RAM قرار می‌ده که سرعت عملکرد را بهینه‌تر و سریع‌تر می‌کند
قابلیت‌های Index متنوع و سرچ و جستجو مبتنی بر الگوریتم‌های ریاضی از جمله سرچ full text search , . . . .
امنیت اطلاعات ← عموما دیتابیس‌ها داده‌ها رو به صورت رمزگذاری شده در خود نگه می‌دارند که باعث امنیت اطلاعات در سرورها یا سرویس‌های اشتراکی می‌شود
پشتیبایی سازنده دیتابیس ← در صورت ایجاد مشکل در دیتاها می‌توانید روی پشتیبانی حساب کنید.
بهینه‌تر بودن و عملکرد بالاتر ← مسلما شرکت‌هایی که که به طور انحصاری بر روی ساخت دیتابیس کار می‌کنند تجربه بیشتری رو برای ساخت دیتابیس‌های منعطف‌تر و بهینه‌تر دارند
قضیه دیتابیس‌ها
در سال‌های اخیر تقاضای بالایی برای پایگاه‌های داده توزیع شده با تحمل پارتیشن بالا وجود داشته است. اما بر طبق تئوری CAP theorem برای یک سیستم توزیع شده (distributed system ) غیرممکن است که به طور همزمان بتواند سه معقوله زیر را تضمین کند
consistency (ثبات اطلاعات)
availability (دسترسی اطلاعات)
partition tolerance guarantees (تضمین تحمل پارتیشن)
یک سیستم توزیع شده همیشه توانایی انجام دو مورد موارد بالا را خواهد داشت و سه مورد با هم در یک زمان غیرممکن هست با اینحال برای این منظور دیتابیس‌های NoSQ با بهره‌گیری از چیزی که بهش قوام نهایی (eventual consistency) می‌گویند هر دو مورد availability و partition tolerance guarantees را با کاهش سطح ثبات داده (data consistency) فراهم می‌کنند.
NewSQLها کلاس مدرن دیتابیس‌های رابطه‌ای (relational databases) هستند که با هدف فراهم آوردن کارایی NoSQLها در مقیاس پذیری دیتاها، در پردازش تراکنشات انلاین (read-write) با حجم بالا در حالی که از SQL و حفظ تضمین ACID دیتابیس‌هایی سنتی برخوردارند به وجود امده‌اند. از این دسته از دیتابیس‌ها می‌شود به مواردی از قبیل ScaleBase, Clustrix, EnterpriseDB, MemSQL, NuoDB و VoltDB اشاره کرد.
لیست دیتابیس‌های گراف موجود
هر دیتابس در زیر جهت استفاده چند زبان را مورد پشیبانی قرار داده‌اند و با رفتن به سایت هر کدام می‌توانید راهنمایی اتصال دیتابیس مورد نظر رو به زبان مورد نظر خودتون که بهش تسلط دارید را دنبال کنید. «برای لیست کامل به ویکی‌پدیای انگلیسی دیتابیس گراف مراجعه کنید»
برای مثال دیتابیس Neo4j قابلیت استفاده در زبان‌های (Java , .NET , Python , Ruby , PHP , JavaScript) را دارا می‌باشد. البته باید مدنظر داشت که در صوریتی که از هاست‌های Cpanel استفاده می‌کنید در حال حاضر نمی‌توانید از دیتابس گراف استفاده کنید و باید به سیستم آزاد‌تری مثل یک Server یا VPS (سرور مجازی) یا ابر . . . . سایت خورد را منتقل کنید.
نام دیتابیس
ورژن
License
Language
توضیحات
ArangoDB
۲٫۸٫۴ (مارس ۲۰۱۶)
Apache 2
C, C++ - JavaScript
A distributed multi-model document store and graph database. Highly scalable supporting ACID and full transaction support. Including a built-in graph explorer.
Blazegraph
۱٫۵٫۳ (سپتامبر ۲۰۱۵)
GPLv2, evaluation license, or commercial license.
Java
A RDF/graph database capable of clustered deployment. Blazegraph supports high availability (HA) mode, embedded mode, single server mode. As of version 1.3.1, it supports the Blueprints API and Reification Done Right (RDR). Prior to version 1.5.0; formerly named Bigdata.
Bitsy
۱٫۵٫۰
AGPL, Enterprise license (unlimited use, annual/perpetual)
Java
A small, embeddable, durable in-memory graph database
BrightstarDB
۱٫۱۰٫۱ (مه ۲۰۱۵)
MIT License 1
C#
An embeddable NoSQL database for the .NET Framework with code-first data model generation.
Cayley
۰٫۴٫۱ (آوریل ۲۰۱۵)
Apache 2
Go
An open-source graph inspired by the graph database behind Freebase and Googles Knowledge Graph.
DEX/Sparksee 2
۵٫۲.0 (2015)
Evaluation, research or development use is free; commercial use is not free
C++
A high-performance and scalable graph database management system from Sparsity Technologies. Its main characteristics is its query performance for the retrieval - exploration of large networks. Sparksee offers bindings for Java, C++, C#, Python and Objective-C. Sparksee 5 mobile is the first graph database for mobile devices.
Filament
BSD
Java
A graph persistence framework and associated toolkits based on a navigational query style.
GraphBase
1.0.03a
Proprietary
Java
A customizable, distributed, small-footprint graph store with a rich tool set from FactNexus.
graphd
Proprietary
The proprietary back-end of Freebase.
Graph Engine
۱٫۰
Office Store Standard Application License (Free)
C++, C#
A distributed, in-memory, large graph processing engine.
Grapholytic
۰٫۱
Proprietary
A distributed GraphDB from MIOsoft.
Gun
Zlib,Apache2,MIT
Javascript
A realtime, decentralized, offline-first, graph database engine.
Horton
Proprietary
C#
A graph database from Microsoft Research Extreme Computing Group (XCG) based on the cloud programming infrastructure Orleans.
HyperGraphDB
۱.2 (2012)
LGPL
Java
A graph database supporting generalized hypergraphs where edges can point to other edges.
IBM System G Native Store
v1.0 (ژوئیه ۲۰۱۴)
Proprietary
C, C++,Java
A high performance graph store using natively implemented graph data structures and primitives for achieving superior efficiency. IBM System G Native Store can handle various simple graphs, property graphs, and RDF graphs, in terms of storage, analytics, and visualization. Native Store is accessible from most programming languages by providing APIs in C++, Java (Tinkerpop/Blueprints), and Python. Its gShell graph command collection and the Native Store REST APIs provide language-free interfaces.
InfiniteGraph
۳٫۰ (ژانویه ۲۰۱۳)
Proprietary
Java
A distributed and cloud-enabled commercial product with flexible licensing.
InfoGrid
۲٫۹.5 (2011)
AGPLv3, free for small entities 3
Java
A graph database with web front end and configurable storage engines (MySQL, PostgreSQL, Files, Hadoop).
jCoreDB Graph
An extensible database engine with a graph database subproject.
k-infinity
۴.0 (2015)
Proprietary, free tryout version and demo scenarios
A semantic graph database which is characterised by its graphical user interface and requires no knowledge of any query language. API is open and based on REST and JSON. Thus it can be easily embedded in existing architectures.
MarkLogic
۸٫۰.4 (2015)
Proprietary, free developer version
Java,JavaScript,XQuery
Multi-model NoSQL database that stores documents (JSON and XML) and semantic graph data (RDF triples). MarkLogic also has a built-in search engine and a full-list of enterprise features such as ACID transactions, high availability and disaster recovery, certified security, and scalability and elasticity.
Neo4j
۲٫۳٫۲ (ژانویه ۲۰۱۶)
GPLv3 Community Edition. Commercial - AGPLv3 options for enterprise and advanced editions
Java
A highly scalable open source graph database that supports ACID, has high-availability clustering for enterprise deployments, and comes with a web-based administration tool that includes full transaction support and visual node-link graph explorer. Neo4j is accessible from most programming languages using its built-inREST web API interface. Neo4j is the most popular graph database in use as of March 2016. 4
OpenCog
AGPL
C++,Scheme,Python
Includes a satisfiability modulo theories solver and a unified rule engine for performing both crisp (boolean) logic and probabilistic reasoning. Backed onto Postgres.
OntotextGraphDB
۶٫۶
GraphDB Free is free.
GraphDB Standard and GraphDB Enterprise are commercially licensed.
Java
A graph database engine, based fully on Semantic Web standards from W3C: RDF, RDFS, OWL, SPARQL. GraphDB Free is a database engine for small projects. GraphDB Standard is robust standalone database engine. GraphDB Enterprise is a clustered version which offers horizontal scalability and failover support and other enterprise features.
Orly
(مارس ۲۰۱۴)
Apache 2
C++
A highly scalable open source graph database; accessible from most programming languages via its built-in REST web API interface.
OpenLinkVirtuoso
۷٫۱ (مارس ۲۰۱۴)
GPLv2 for Open Source Edition.Proprietary for Enterprise Edition.
C, C++
A hybrid database server handling RDF and other graph data, RDB/SQL data, XML data, filesystem documents/objects, and free text. May be deployed as a local embedded instance (as used in the NEPOMUK Semantic Desktop), a single-instance network server, or a shared-nothing elastic-cluster multiple-instance networked server. 5
Oracle Spatial and Graph
۱۱.2 (2012)
Proprietary
Java, PL/SQL
1) RDF Semantic Graph: comprehensive W3C RDF graph management in Oracle Database with native reasoning and triple-level label security. 2) Network Data Model property graph: for physical/logical networks with persistent storage and a Java API for in-memory graph analytics.
Oracle NoSQL Database
۲٫۰٫۳9 (2013)
Proprietary
Java
RDF Graph for Oracle NoSQL Database is a feature of Enterprise Edition providing W3C RDF graph capabilities in NoSQL Database.
OrientDB
۲٫۱٫۹ (ژانویه ۲۰۱۶)
Community Edition isApache 2, Enterprise Edition is commercial
Java
OrientDB is an open source 2nd Generation Distributed Graph Database with the flexibility of Documents in one product (i.e. , it is both a graph database and a document nosql database at the same time.) It has an open source commercial friendly (Apache 2) license. It is a highly scalable graph database with full ACID support. It has a multi-master replication and sharding. Supports schema-less, schema-full and schema-mixed modes. Has a strong security profiling system based on user and roles. Supports a query language that is so similar to SQL which is friendly to those coming from a SQL and relational database background decreasing the learning curve needed. It has HTTP REST + JSON API.
OQGRAPH
GPLv2
A graph computing engine for MySQL, MariaDB and Drizzle.
Profium Sense
۶٫۰
Proprietary
Java
Profium Sense is a contextual content management platform with a built-in triple store. Profiums own reasoning engine supports OWL 2 RL and RDFS and is optimized to manage continuous information streams that require continuous inferencing on-the-fly. Profium architecture is based on an in-memory database with ACID transaction support and supports distributed high-availability deployment.
R2DF
R2DF framework for ranked path queries over weighted RDF graphs.
ROIS
Freeware
Modula-2
A programmable knowledge server that supports inheritance and transitivity. Used in OpenGALEN as a terminology server.
Semblent Lionsgate
v1.0.3 (دسامبر ۲۰۱۴)
Proprietary
JavaScript
A scalable, generic distributed database framework coupled with graph search able to efficiently maintain synchronisation persistently between server side and client side databases via a self-building API.
SPARQLCity
v1.0.95 (اکتبر ۲۰۱۴)
GPLv3
C, C++ -JavaScript
SPARQLCity produces SPARQLVerse: A standards and Hadoop based analytic graph engine for performing rich business analytics on structured and semi-structured data.
Sqrrl Enterprise
v1.5.1 (اوت ۲۰۱۴)
Proprietary
Java
Distributed, real-time graph database featuring cell-level security and mass-scalability.
Stardog
v3.1.5 (ژوئیه ۲۰۱۵)
Proprietary
Java
Fast, scalable, pure Java semantic graph database.
Teradata Aster
v6 (2013)
Proprietary
Java, SQL,Python,C++, R
A high performance, multi-purpose, highly scalable and extensible MPP database incorporating patented engines supporting native SQL, MapReduce and Graph data storage and manipulation. An extensive set of analytical function libraries and data visualization capabilities are also provided.
Titan
۱٫۰ (سپتامبر ۲۰۱۵)
Apache 2
Java
A distributed, real-time, scalable transactional graph database developed by Aurelius.
TripleBit
C, C++
A centralized RDF store.
VelocityGraph
Open source with proprietary back-end
C#
High performance, scalable - flexible graph database build with VelocityDB object database.
VertexDB
Revised BSD
C
A graph database server that supports automatic garbage collection.
VivaceGraph
۳٫۰ (دسامبر ۲۰۱۴)
MIT License
Common Lisp
Pure Common Lisp graph database.
Weaver
۰٫۱ (دسامبر ۲۰۱۴)
BSD licenses
C, Python
A fast, scalable, ACID transactional graph database with replication and migration.
WhiteDB
۰٫۷٫۰ (اکتبر ۲۰۱۳)
GPLv3 and a free commercial licence
C
A graph/N-tuples shared memory database library.
OhmDB
۱٫۰٫۰ (اوت ۲۰۱۴)
Apache 2
Java
RDBMS + NoSQL Database for Java.
AllegroGraph
۵٫۱ (مه ۲۰۱۵)
Proprietary. Clients:Eclipse Public License v1.
C#, C,Common Lisp, Java,Python
An RDF and graph database.