How to install & configure Sparksee mobile for iOS (C++)

apple logo-01Sparksee is the first graph database available for iOS devices applications, available, right now, in the C++ interface. In this article we will guide through a typical installation & configuration , so you can start working with Sparksee in your mobile development environment in a few minutes.

 

Step 1) Downloading Sparksee

Download your Sparksee mobile library from our website here: http://www.sparsity-technologies.com/#download

We will send you an email on how to download your own copy. Downloads for mobile (like the licenses requests) are moderated, please wait until a support member contacts back.

Once you receive your download, uncompress the “.dmg” file to get the Sparksee.framework directory. This directory contains the include files, the static library and the documentation.

Step 2) Creating a new project linking Sparksee mobile library

  • Add the Sparksee include files to the search path in your application project. The path to Sparksee.framework/Resources/sparksee/ must be added as non-recursive to the User Header Search Paths option on the build settings of your Xcode application project. This is required because Sparksee’s include files use a hierarchy of directories not usual in an Xcode framework. Therefore, they can’t be included in the regular Headers directory of the framework.
  • Add the Sparksee.framework to the Link Binary With Libraries build phase of your application project. You can just drag it there.
  • Choose the most appropriate library: libstdc++ (GNU C++ standard library) or libc++ (LLVM C++ standard library with C++11 support) in the C++ Standard Library option from the build settings of the compiler. This version must match the one you downloaded in first place.
  • Take into account that after all these changes you may need to Clean your Project.

Run the empty application! That’s it! You now have a new project using Sparksee.

 Step 3) Other configuration considerations

Remember that all the source files using C++ should have the extension “.mm” instead of “.m”.

Step 4) Initial steps

Now you should create a new Sparksee database,  follow this order of actions:

  • Add the following namespace: using namespace sparksee::gdb;
  • Now you should make some configuration steps before creating the database. First of all, create a new configuration class with SparkseeConfig cfg;
  • Set the license code with SparkseeConfig::SetLicense(key): Sparksee mobile only works with a valid key, you are going to get that code in the same email of your download.
  • Limit the Sparksee cache memory with SparkseeConfig::SetCacheMaxSize(MB): Sparksee by default takes all the free available memory space, but that is something you surely may control in a phone device.
  • Activate the recovery functionality with SparkseeConfig::SetRecoveryEnabled(true): The recovery is a helpful functionality that will allow you to recover all your data if any error occurs.
  • Set the log file with SparkseeConfig::SetLogFile(filename): Specify a log full name&path where you have write permission.
  • Create the main Sparksee class with new Sparksee(cfg): take into account that the argument of this method is the SparkseeConfig created.
  • You have already configured Sparksee, now let’s create your database with Sparksee::Create(filename, alias). Again you will need name&path as happens with the log.
  • It’s time to create a new session with Database::NewSession().
  • Graph objects and operations are available at Graph class level; you need to get the graph from the session with Session::GetGraph().

Done!

We continue improving our Sparksee mobile iOS support by having an Objective-C API on the works to be released soon, so keep tuned!

Posted in Documentation, Sparksee | Tagged , , , , | Leave a comment

Graph Databases research: Using semijoins programs to solve traversal queries

huge-semijoinOne of the most important challenges for graph databases is how to express graph queries and how to solve them efficiently. There is an important gap between the current industrial approach with libraries of very efficient APIs for procedural languages as Java, and high level languages like Gremlin and Cypher that combine pipes or data flows of results from the execution of graph APIs. Also, it is very difficult to optimize complex graph oriented programs based on direct calls to low level APIs. In recent years several proposes have raised from the research community, but these solutions are still far from being adopted by the graph database vendors.

In the (ACM publishing pendant) paper presented by Sparsity Technologies at GRADES workshop 2014, we propose an algebra with a set of operations to solve graph queries in Sparksee, and we introduce extensions to SQL-like features to compute recursive programs and collection-oriented procedures typical for graph algorithms. The operations of this algebra are capable to reproduce the behavior of the current Sparksee APIs and, at the same time, are flexible enough to be combinable in the form of query plans that are suitable for optimization using the most usual database query optimization techniques as well as future optimizations more specific of graph patterns and graph traversals. Also, by adapting the operations to the graph data representation of the Sparksee engine, the query runtime will be able to take advantage of compressed bitmap processing and combination.

An important property of the operations is that most of them belong or have been adapted from the relational algebra, and the data structures in the form of key-value pairs are close to the relational model with multivalued attributes (Non First Normal Form relations). In particular, our main operation is the semijoin, which has been widely used in database technology for distributed systems, and semijoin program optimization has been studied and formalized in detail. Thus, our proposal is a compromise between the relational model and the noSQL and, in more detail, key-value pairs storages and graph querying systems. On the other hand, our procedural extensions for parallel subquery execution and recursion can be used to simulate graph analytical frameworks for the computation of complex graph algorithms over huge graphs.

Our next steps are to implement the prototype of the query engine with full support of the algebra, and to test and validate the performance of the proposal. After that, we will focus on query plan optimization for semijoin programs combined to our non-relational extensions for the resolution of complex queries over large graphs.

Which are your thoughts on our approach of using the semijoin as main operation? Also, remember that we have a free license program for researchers that would like to use Sparksee.

Posted in Research, Sparksee | Tagged , , | Leave a comment

Graph Databases research: Synthetic graph data generators

Sparsity Technologies is very interested not only in the graph database technology itself, but also in all the applications that can take advantage of Sparksee. One of the most popular ones is the analysis of social media data represented as graphs. For this topic, our research team is collaborating with social data experts in DAMA of the Universitat Politècnica de Catalunya.

Our latest work was presented in the Graph Data-management Experiences & Systems (GRADES) Workshop in conjunction with DAMA-UPC. There, we presented our experiencies with synthetic graph data generators. Such generators build arbitrarely large graphs that aim at simulating the structure of social networks. We experimented with two generators LFR (by Lancichinetti et al.) and the LDBC data generator. The former provides the network structure of a social network, while the latter builds a full social network with attributes and posts that will be used in the LDBC benchmarks.

growing_graph_ack_mike_bergman

In our paper, we observe that LFR is able to mimic some of the properties of real networks, though the distribution of triangles in the network differs. On the other hand, the LDBC data generator provides a much more accurate network, that simulates with large precision the community aspect of real networks. Such data generators are very valuable for Sparksee’s development since they allow us to generate huge graphs to test our database technology thoroughly. Read more information about the creation of synthetic graph data generations in our paper here.

 

Posted in Research, Sparksee | Tagged , , , | Leave a comment

Twitter influence contest at GraphLab Conference 2014

To celebrate our participation in the GraphLab Conference 2014 we have decided to hold a contest and test our beta Social Networks analytics technology using the Sparksee graph database. If you want to prove your influence in the Social Media and win one of our 10 exclusive polos, don’t hesitate to join the contest!

How can I participate?

The only thing you have to do is to retweet the tweets containing the #sparsitycontest hashtag that we will publish from Friday 18th to Monday 21st. Our system is able to simulate the propagation of the tweets in order to discover people who are influential in the topics that cover that specific tweet. The 10 most influential participants in those propagation chains will be the winners.

What do I win?

If you are among the top 10 influencers retweeting our tweets you will win one of our 10 exclusive gray polos with Sparsity’s logo embroidered in blue. All polos are size L. See picture in this post.

Where and when I can pick the prize?

If you are one of the winners, you will have to pick your prize at the stand of Sparsity Technologies in the GraphLab Conference 2014 venue (table 22). The winners will be announced on July 21st at 17:30 through our official twitter account @Sparsitytech and the prizes will be delivered in-hand before the conference is over.

la foto 5 Processed with VSCOcam with hb2 preset

Posted in Events, Sparksee | Tagged , , , | Leave a comment

Sparsity Technologies at GraphLab Conference 2014

2014GLconference_banner-sparsity

 

We are glad to announce that Sparsity Technologies is attending the GraphLab Conference 2014, the 3rd edition of the largest trade-show of graph based systems that takes place in San Francisco on July 21st.

Sparsity Technologies will be among the data scientists, software engineers and big data analytics thinkers from the companies, academic institutions and organizations leading the way in the graph arena.

Curated presenters at the GraphLab Conference cover several domains: graph analytic frameworks, graph databases (here you will find us among Neo4j, Titan, Franz and Objectivity), as well as graph visualization solutions, python data science tools and several interesting application on graphs for different fields.

The conference will take place at Hotel Nikko, 222 Mason Street in San Francisco (US), starting at 8:00AM, and you will find our stand at table 22.

Looking forward to meeting you there!

Posted in Events | Tagged , , , | Leave a comment

How to install & configure Sparksee mobile for Android

Sparksee is the first graph database available for Android devices applications, available in two interfaces java and C++. In this article we will guide through a typical installation & configuration for the java interface, so you can start working with Sparksee in your mobile development environment in a few minutes.

To make sure your application development meets our requirements, Sparksee Android requires Platform level 9 (Android 2.3) and an Android SDK, while it supports the processors armeabi, armeabi-v7a, x86, mips.

Although you are free to work with the development environment that best suits your needs, for this quick tutorial we are going to suppose that you are either using:

a) Eclipse & plugin ADT + SDK
b) Android Studio + SDK

You will need to update or have installed the API platforms and the emulator.

Step 1) Downloading Sparksee

Download your Sparksee mobile library from our website here: http://www.sparsity-technologies.com/#download

We will send you an email on how to download your own copy. Downloads for mobile (like the licenses requests) are moderated, please wait until a support member contacts back.

Once you receive your download, unzip it & check the contents:

READ.ME: Basic Android sparkseejava instructions.
LICENSE.txt: License details.
ReleaseNotes.txt: Current version changes.
lib: Dynamic libraries.
doc: Sparksee documentation.

Step 2) Creating a new project linking Sparksee mobile library

Create an Android application project using the IDE (Eclipse or Android Studio) called (for instance) HelloSparksee

Follow the READ.ME instructions:

Copy all the content of the “lib” directory to the “libs” directory of your android project.

a) Eclipse option
Right click on the “libs/sparkseejava.jar” file and select “Build Path > Add to Build Path”.
Set in your “AndroidManifest.xml” a minimum sdk version >= 9

b) Android Studio option
In AndroidStudio, right click on the “libs/sparkseejava.jar” file and select “Add as library…”.
Add this exact text “compile files(‘libs/sparkseejava.jar’)” to the “build.gradle” file.
Set a minimum sdk version >= 9 in the “build.gradle” file.

Run the empty application! That’s it! You now have a new project using Sparksee.

Step 3) Initial steps

Now you should create a new Sparksee database, to make that follow this order of actions:

  • Add the following import: import com.sparsity.sparksee.gdb.*;
  • Now you should make some configuration steps before creating the database. First of all, create a new configuration class with SparkseeConfig cfg = new SparkseeConfig();
  • Set the license code with SparkseeConfig.setLicense(key): Sparksee mobile only works with a valid key, you are going to get that code in the same email of your download.
  • Limit the Sparksee cache memory with SparkseeConfig.setCacheMaxSize(MB): Sparksee by default takes all the free available memory space, but that is something you surely may control in a phone device.
  • Activate the recovery functionality with SparkseeConfig.setRecoveryEnabled(true): The recovery is a helpful functionality that will allow you to recover all your data if any error occurs
  • Set the log file with SparkseeConfig.setLogFile(filename): Specify a log full name&path where you have write permission
  • Create the main Sparksee class with new Sparksee(cfg): take into account that the argument of this method is the SparkseeConfig created.
  • You have already configured Sparksee, now let’s create your database with Sparksee.create(filename)). Again you will need name&path as happens with the log.
  • It’s time to create a session session with Gdb.newSession()
  • Graph objects and operations are available at Graph class level; you need to get the graph from the session with Session.getGraph()

Done!

Continue creating your nodes, edges and interact with them, check our documentation to keep working. Make sure to close everything properly and in the following order: close session, close database and finally close sparksee.

Posted in Documentation, Sparksee mobile | Tagged , , | Leave a comment

Sparsity fuelled by research

ID-10065998Graph management and algorithmics are two of the hottest topics in top international data management conferences. As a by-product of some of the findings from those research topics, graph management technologies have flourished in the last 5 years. Sparksee (formerly called DEX) was born as such more than 8 years ago, being one of the precursors of graph management technologies. At the time, the seminal research work was done by DAMA-UPC research group at BarcelonaTech, which spun out to Sparsity Technologies a few years later.

Sparksee was born as the product of intense research on the representation of graphs for high performance management. The seminal paper on Sparksee dates back to 2007, where an analysis and comparison of Sparksee was done (read the seminal paper here). In line with this, Sparksee was designed to have a small software footprint and high data compression, allowing for the execution of complex graph queries on databases with billions of objects in off-the-shelve computing devices. Sparksee makes an intensive use of bitmaps allowing for the use of simple logic operations and high data locality to solve graph analytics. All the resulting technology from our research has been patented internationally.

As a consequence of the interesting field that the seminal paper unwrapped, Sparksee is currently supporting research on related areas that will surely help us improve & secure our product on the following versions, such as  community search algorithms, benchmarking, performance analysis, graph applications, query languages, graph algebras and query optimisation.

Keep tuned to the next chapters where we are going to talk a little bit more about all the research areas that Sparsity is working right now with very promising results.

 

Image courtesy of David Castillo Dominici / FreeDigitalPhotos.net

Posted in Research | Tagged , , | Leave a comment

Graph Databases power in-device analytical appplications: Sparksee Mobile, the first graph database available for iOS and Android

MobileMobile device data analytics is going to be an important issue in the next few years. Hardware improvements like more efficient batteries, larger memories and more conscious energy consumption will be crucial to allow for complex computations in such devices. Added to that, the analytics capability analytical engines embedded in a mobile device will also allow the users to gather and manage their own private data with analytic objectives at the tip of their fingers.

Graph databases will be important in that area with situations where the mobile device will have to solve different problems like the management of the mobile data, social network analytics, mobile device security, geo-localized medical surveillance and real time geo-localized travel companion services.

Sparksee 5 mobile is an important provider player for mobile analytics applications, being the first graph database for Android and iOS. Sparksee small footprint of less that 50Kbytes* makes it especially attractive for mobile devices along with its high performance capabilities and the compact storage space required. Sparksee is powered by a research-based technology that makes an intensive use of bitmaps allowing for the use of simple logic operations and remarkable data locality to solve graph analytics.

Do you want to  be among the first applications making real use of the device hardware possibilities? Have you considered resolving your analytical operations in the device, storing & querying the information in a graph database instead of having an external server? Let us know what do you think about this new possibilities and which applications do you think will benefit more of having an in-device real time process.

Download Sparksee graph database mobile for free at: http://sparsity-technologies.com/#download

 

*Size of Sparksee compiled software

Posted in Sparksee | Tagged , , | Leave a comment

Sparksee, the high performance graph database

sparsitygraph

Graph technologies are being used in many situations where it is necessary to analyze large amounts of highly linked data and high performance is required.  In many of those cases it is necessary to process data that will provide an important input for specific added value business queries at high performance levels.

Questions like: What are the communities in a Social Network which may be interested in my service? Do I have any restaurant around my current location that I would like? Could you show me the shortest way to get there?  Who are the most influential people in a scientific topic? Those queries come from very different environments like Social Networks, fleet routing through map analysis, bibliographic networks, etc.

The datasets emerging from those environments can be represented as graphs, and graph management solutions provide advantageous solutions for them. In particular, Sparksee provides the best compromise between high performance, capacity and small footprint.

Sparksee’s high performance graph management engine is designed to have a small software footprint and high data compression, answering queries dealing with billions of objects in off-the-shelve computing device in sub-seconds. Sparksee is powered by a patented research-based technology that makes an intensive use of bitmaps allowing for the use of simple logic operations and high data locality to solve graph analytics.

Sparksee 5 high performance graph database is available for Windows, Linux, MacOS, iOS and Android, with native APIs in Java, .Net (C#), C++ and Python.

Do you want to try out Sparksee for your specific use case? Do you think that other database management solutions are not providing enough performance or capacity for your data? Contact us and we’ll help you  to make the most of your data.

 

Posted in Sparksee | Tagged , , , | Leave a comment

Genezik is able to trace paths in music with DEX

The researchers at EPFL’s Signal Processing Laboratory propose a software that allows the exploration and rediscovering of your own musical library, called Genezik, which will be presented in the next Montreux Jazz Festival.

Instead of other approximations to recommend music based on tags or user reviews this software uses the music signal to identify those recommendations that may not be as obvious. For instance, although Led Zeppelin is sometimes classified as hard rock some of its songs are more near Bob Marley; Genezik is able to identify this relationships.

It also comprises a social compoment, where different users’ graphs are connected to each other, in order to use this network to recommend songs discovered by others.

Genezik successfully uses DEX as its graph database management system. Stay tuned for more news of this exciting new software by EPFL (École polytechnique fédérale de Lausanne)!

Check more information at: http://actu.epfl.ch/news/epfl-software-is-able-to-trace-paths-amidst-a-musi/

lts2LTS2 is a team of researchers working at the Department of Electrical Engineering of the Swiss Federal Institute of Technology (EPFL), Lausanne, Switzerland. Their research focuses on modern challenges in data processing.

Posted in DEX, News, Use Case | Tagged , , , , , , , , , | Leave a comment