Visualizing Almost Fifty Thousand DBA_OBJECTS In A Graph


What do almost fifty thousand Oracle objects look like?

Continuing my exploration of graph databases, I loaded every object from DBA_OBJECTS into a NEO4J graph and visualized it with Gephi.

That included all the objects from Oracle 11.2 DBA_OBJECTS, with the exception of the Java objects: Java Source, Java Class, Java Data. It also included some other schemas I’ve loaded into the database, such as Perfstat, SH, SCOTT, BI, etc. Altogether, 48,690 objects, and 61,710 relationships were inserted into NEO4J and then imported into Gephi.


Good Data Source
:

As I did this, I thought that DBA_OBJECTS makes a rather good dataset to experiment with. It’s freely available to any DBA. The data is not sensitive. There is lots of data:  tens of thousands of rows. The relationships between the objects are listed in DBA_DEPENDENCIES. Most all the data points represent a connected tree structure.  This is exactly what NEO4J and Gephi work well with.


OpenOrd Layout
:

Gephi has a number of layouts to work with. I used the OpenOrd layout in Gephi to visualize all the data. OpenOrd completed the layout quickly, in a few minutes. By contast, the Fruchterman Reingold layout did not complete even after I let it run all night. Perhaps Fruchterman Reingold is only good for small data sets.

I partitioned according to the Object_Type (Synonym, View, Index, Table), using the default colors Gephi provided. Then set the edge color to red.  See what the results looked like.


The Big Picture
:

OpenOrd showed stelliums of objects clustered together.

DBA_OBJECTS Visualized In OpenOrd Layout, wide

DBA_OBJECTS Visualized In OpenOrd Layout, wide

They remind me of constellations in the night sky.

DBA_OBJECTS Visualized In OpenOrd Layout, Medium 1

DBA_OBJECTS Visualized In OpenOrd Layout, Medium 1

DBA_OBJECTS Visualized In OpenOrd Layout, Medium 2

DBA_OBJECTS Visualized In OpenOrd Layout, Medium 2

Using Gephi, it’s amazing how much you can zoom in on the nodes.

DBA_OBJECTS Visualized In OpenOrd Layout, Close Up

DBA_OBJECTS Visualized In OpenOrd Layout, Close Up


Points To Note
:

Putting labels on these nodes and edges was impractical with so many crowded nodes. The text totally over shadowed all the nodes, even after running Label Adjust.

When generating the OpenOrd graph, there is a Random Seed. So if you generate the the graph again, it will not be exactly the same as the first time.


Gephi Does Many Things
:

Gephi does a lot of things. So there is much to know about what it can and can’t do. In each layout, there are a number of parameters that apply only to that specific layout. Such as grouping, ordering, weights, scaling, distances, etc. I’m sure exploring the functionality of each layout could make for a number of good blog posts.


Most Interesting Results
:

I have to say, the OpenOrd layout showed DBA_OBJECTS in a manner I did not expect at all. Gephi gives new meaning to the big picture.

My first impression:  it’s very intriguing and rather beautiful.

Advertisements

3 Responses to Visualizing Almost Fifty Thousand DBA_OBJECTS In A Graph

  1. Yuri Slutsky says:

    ” it’s very intriguing and rather beautiful” but, in my opinion, it isn’t very practical. When you want to look object dependency, most often you have the object. You have to have an easy method to look its dependencies. But to look and to see the entire database at once is impressive, I agree!

  2. rodgersnotes says:

    Hi Yuri,

    Perhaps see some of my other blog posts on Graphs:
    https://rodgersnotes.wordpress.com/category/graph-database-2/

    Including this one:
    Using NEO4J To Find Paths To All Parent Or Child Objects
    https://rodgersnotes.wordpress.com/2013/08/12/using-neo4j-to-find-all-parents-child-paths/

    It concerns finding all the parents or children of an object in DBA_OBJECTS, and some of the reasons why I looked at graphs in the first place.

    It could be used to answer the questions:

    What are ALL the prerequisites (parents) to create this view, any and all layers deep.

    If I drop this view, what are all the children that will be affected, any and all layers deep?

    DBA_DEPENDENCIES only goes one layer in each direction, so if there are many layers, you need to do many recursive reads to find all the layers of objects. Both up and down, and side to side.

    But in a graph, all layers are found in a single query. Very fast and efficient.

    Do check it out.

    Best,

    Rodger

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: