Dmitriy Maslennikov · Mar 24, 2020 2m read

BlocksExplorer map generator

I hope you already know one of my projects Cache Blocks Explorer. I've recently renamed it to Blocks Explorer.

For the recent contest, I've added a new feature, the ability to generate a static picture of any Cache or IRIS database. Like below. Where unique globals have a unique color. This is how looks like inside 9.5GB database. Where 1 pixel represents one block. By link on image you will get even bigger image, with more detalization.

The easiest way to generate a picture like this is to use docker.

docker run -it --rm \
       -v /opt/some/database/for/test:/db \
       -v `pwd`/out:/out \
       daimor/blocksexplorer:iris generate 1 0 0

For Caché Database use daimor/blocksexplorer:cache instead of daimor/blocksexplorer:iris

Instead of /opt/some/database/for/test you should pass the path to your database.

generate is a command and it's arguments

  1. Cell size - used to set size for cell which represents database's block. By default 1
  2. Cell space - space between cells. By default 0
  3. Fill - flag to display how much block fill, make sense to set if size of the cell is 10 or more. By default 0

Arguments can be omitted. If no command passed, it will start the server as is, with original UI.

If you like this project, please vote here.

Please be aware, at the moment it uses BMP format to generate a picture, so, for too big databases this picture will be very very big. With default settings 1 pixel per block, it will generate a picture with size at least 3*numberOfBlocks bytes.

0 6 160 1



This is a very beautiful (maybe) but IMHO absolutely useless picture of globals' blocks.

How can I use your program to show the blocks of a particular database I working on now? 

Or a particular global?

I already mentioned, how to do it for a whole database. At the moment no way to specify just a global. Fill an issue ))

Thanks, Dmitriy!

Analysing database, If you mean this:

docker run -it --rm \        -v /opt/some/database/for/test:/db \        -v pwd/out:/out \        daimor/blocksexplorer:iris generate 1 0 0

so this doesn't look very convenient.

Is it possible for me to install your app on a running container (e.g. with ZPM) and request to check one of the mounted databases? This is a more convenient approach, isn't it?

It's a when you in one command get everything you need. The problem is, that it uses external tool imagemagick to convert resulying image in bmp format to png. That's why it's not as simple as may sound.

Another reason is do not anything to a working system. To gather information enough readonly access to the database.

May I use your solution to check the blocks of the IRIS database which I launch in Docker?