DEX Frequenlty Asked Questions list (FAQ)

873 views
Skip to first unread message

dex...@gmail.com

unread,
Feb 10, 2015, 4:28:13 AM2/10/15
to
Sparksee Frequently Asked Questions

Here is the list of the frequently asked questions that have arrived to the Sparksee team and its answers. We highly recommend looking this post before asking, in case your may find here your answer.

[General] What is Sparksee?

Sparksee is a high-performance Graph Database Management System for network analysis. It is written in C++. One of its main characteristics is its performance storage and retrieval for large graphs, in the order of billions of nodes, edges and attributes, allowing the analysis and query of large scale networks.


[General] Is it Sparksee the same thing called DEX?

Yes. DEX is oficially called Sparksee since February 2014, when Sparsity Technologies went under a rebranding process. Version 5.0 was the first one called Sparkse.

[General] What is the graph data model in Sparksee?

Sparksee has support for Labeled and Attributed Multigraphs with Directed and Undirected edges.

Labeled: nodes and edges belong to types.
Attributed: nodes and edges can have properties.
Multigraph: multiple edges between the same nodes even from the same edge type.
Directed edge: the edge goes from a source vertex (the tail) to the destination vertex (the head).

[General] What kind of license schema do you have for Sparksee?

We offer the following options for licenses:

  • Personal evaluation (FREE): Sparksee is free to use, in its SMALL size, for non-commercial purposes. The download is available in the website. 
  • Research program (FREE): Sparsity encourages research by offering free licenses to PhD students, academics and other university staff, for non-commercial purposes.  Fill our online form to join this program, many companies have already signed up.
  • Development (FREE): Sparsity Technologies may offer development licenses for any size and free of charge for enterprises. Fill our online form to request it!
  • Startups program: This is a special license for those companies inside Sparksee Partnership program. It includes a free development license (see conditions above) and a special commercial license. Fill our online form to join this program!
  • Commercial: Sparksee Commercial license allows the software, implemented with DEX, to be used commercially without providing any recognition. It includes several price lists dependent on on the size of the database and the number of concurrent users.Check the price list and contact us!

[General] What are the supported platforms?

Sparksee is supported in Windows and Linux (32 and 64 bits), MAC OSX, Android, iOS and BB10.

[General] Are the Sparksee databases portable between platforms?

Yes, when the platforms have the same endianness, even between 32 and 64 bit platforms. In particular, portability has been tested in Intel-based Windows 32, Linux 32 & 64 bits. The port of a database is as simple as a copy of the Sparksee database file.

[General] Has Sparksee a Blueprints wrapper?

Yes it does!. You can see more information about the implementation for Sparksee of Blueprints here: http://sparsity-technologies.com/blog/?p=272 and here: https://github.com/tinkerpop/blueprints/wiki/Sparksee-Implementation.

[General] Is there a Sparksee database manager tool?

No. We are working in a new GUI tool for the exploration and administration of Sparksee databases, but we do not have a release date yet.

[General] Can I use Gremlin?

Yes of course!  

Test something like this:

$ wget http://tinkerpop.com/downloads/gremlin/gremlin-groovy-2.2.0.zip
$ unzip gremlin-groovy-2.2.0.zip
$ ./gremlin-groovy-2.2.0/bin/gremlin.sh
\,,,/
(o o)
-----oOOo-(_)-oOOo-----
gremlin> g = new SparkseeGraph(”./graph.gdb”)
==>dexgraph[./graph.gdb]
gremlin> g.loadGraphML(’gremlin-groovy-2.2.0/data/graph-example-2.xml’)
==>null
gremlin> g.V.count()
==>809
gremlin> g.E.count()
==>8049
gremlin> g.V(’name’, ’HERE COMES SUNSHINE’).map
==>{name=HERE COMES SUNSHINE, song_type=original, performances=65, type=song}
gremlin> g.V(’name’, ’HERE COMES SUNSHINE’).outE(’written_by’, ’sung_by’)
==>e[3079][1053-written_by->1117]
==>e[4103][1053-sung_by->1032]
gremlin> g.V(’name’, ’HERE COMES SUNSHINE’).outE(’written_by’, ’sung_by’).inV.each{println it.map()}
[name:Hunter, type:artist]
[name:Garcia, type:artist]
gremlin> g.shutdown()
==>null
gremlin> quit


[Documentation] Is there a Sparksee programming tutorial?

Yes, you will find all the support material in the Documentation section of the website. The Starting Guide, which will help you to create step by step your first graph with the API of your choice. You can also skip the guide and download the examples from here: Download examples. To learn everything about Sparksee you can check the User Guide, all your doubts should be answered there. If there is something missing, go ahead and ask us anything, we would like to be helpful! Finally, the reference guides for each language can be of help during the programming taks of your applications using Sparksee. 

[API] Is there a .NET binding?

Yes! We offer the .Net binding since version 4.2.

[API] Is there a C++ binding?

Yes! We offer the C++ binding since version 4.4.

[API] Is there a Python binding?

Yes! We offer the Python binding since version 5.0.

[API] Is there a Objective-C binding?

Yes! We offer Objective-C for both Sparksee and Sparksee mobile since version 5.1

[API] Is there a REST API?

No. This feature is not in our short term roadmap, but we do not discard to provide it in the future.

[Integrity] Is Sparksee transactional?

Sparksee has been designed and implemented as an exploration database manager. In consequence, it has a partial support for transactions basically for concurrency purposes. It follows the Shared-Exclusive concurrency model, also known as many readers - one writer, where the engine allows many concurrent read transactions, or a single update transaction, but not a mix of both. This approach is a partial ACID support: consistency and isolation. Update transactions only support commits; in the current version is not possible to abort or rollback a transaction. 

[Integrity] Is Sparksee ACID?

Sparksee is since 5.1 fully ACID compliance. 

[Integrity] Is Sparksee fault-tolerant?

Sparksee has no validation of the integrity of data pages and structures. We are working in two different approaches: the verification of the validity of data into a data page, and the integrity of all page updates done in a single transaction. There is also a future project of a database check tool to validate the logical integrity of the database graph. Some of these new features are in development but they are not planned for the next Sparksee release (Q2/2014).

[Concurrency] Which is Sparksee concurrency model?

Sparksee model follows the Shared-Exclusive concurrency model, also known as many readers - one writer, thus read transactions can be executed concurrently whereas write transactions are executed exclusively.

[Multitenancy] Does Sparksee offers permissions/security?

Sparksee does not offer grants & permissions directly with the API, and this is handled at application level. Our costumers have usually taken an adhoc approach of implenting this by creating a wrapper that validates operations. 

For instance you could create a separate db (a dex graph or another storage) with the node types or edge types each user is able to access. With DEX it would be creating a graph with nodes "Users" and nodes "Node Type" and edges between those called "Allow". You would then validate against this graph. But this would also work great using users information in a RDBMS, and then the validation against your data graph. Similarly you could use a graph to implement an Access control list. 

[Graph Analysis] Are there graph traversal algorithms on top of a Sparksee graph? 

Sparksee has two traversal methods, BFS and DFS, and two path algorithms, the unweighted shortest path and the Dijkstra's algorithm for weighted graphs. The current version is implemented as an iterator over the vertices.

[Graph Analysis] Can you control the traversals through callbacks?

We have an experimental version that supports callbacks for the traversed vertices and edges, but it is not planned for the next Sparksee release.

[Storage] Supports Sparksee data partitioning or clustering?

Sparksee supports up to 10 billion objects in a single database. However, we do not offer data partitioning or clustering in the current version of Sparksee although partitioning (distributed-Sparksee) is in our long-term roadmap.

[High Availability] Does Sparksee offer a high availability?

Yes! Since version 4.7 can be replicated using a master/slave approach. It assures both:
  • Horizontal scaling: Increases the throughput (queries/second) as many times as the number of SparkseeHA nodes in the HA system.
  • Availability: The replicated system available in SparkseeHA mode will help you assuring a high service level agreement.
Reply all
Reply to author
Forward
0 new messages