JSON Studio Architecture

JSON Studio is a suite of tools for MongoDB. Some of the tools are development/QA/production support tools and some are reporting/visualization/analytics tools. Some of the tools are GUI tools and some are utilities. You get all tools in one package at one low cost.

All of the JSON Studio GUI tools run within a Tomcat server and can be installed on Linux, Windows or MacOS. These include the query builder, the analytics builder, the schema analyzer/viewer, the Excel bridge, and all visualization tools. The Windows and MacOS installers have a JRE included; on Linux you need to have a JRE installed (Java 7 or up). The UI itself runs within a browser such as Chrome, Firefox, Safari or IE.

The Studio can be installed by each user on their own desktop/laptop as shown in the top option to the right.

If there are many users in a single team, then a single server with an installation of the Studio can be used as shown in the middle option. This can be installed on the host running MongoDB itself, or more commonly, on a separate host/VM. This JSON Studio server can be used by many users to connect to many MongoDB clusters. This added flexibility over multiple installs on many desktops makes it easy for development teams as well as analysts to share metadata and work collaboratively and reduces the number of installs and management required by other tools. It also allows for central management of the tooling environment.

If the MongoDB databases are located in the cloud then it is typical (but not mandatory) to install the Studio also in the same cloud for increased performance. If your MongoDB databases are on Amazon’s AWS you can install JSON Studio on an EC2 instance.

architecture

The development/QA tools are all Python utilities for Linux and can run on any Linux server (on-prem and in the cloud) that are able to access the MongoDB instances. These include the ETL tool, the differs, the resource manager and more. These tools require pymongo to be available.


Gateway Architecture

 

The Gateway is a middleware component that lets non-technical users use queries, reports and graphs that are built by power users (developers and analysts). It also allows such artifacts to be exposed as RESTful APIs that can be used for building dashboards and for other programs to get data using the existing queries and pipelines. Using the Gateway and the Studio customers create a middleware layer through which all users and programs (regular users as well as power users) connect to the databases without making direct connections to the database.

When using the Gateway in conjunction with the Studio:

  1. A power user builds queries, aggregation pipelines, and graphs using the Studio. These queries and pipelines are usually parameterized so that users calling them can pass arguments.
  2. These are published by name in a metadata repository (another MongoDB database). These published APIs are invoked by name and hide implementation  details.
  3. A user that wishes to get data invokes the API by name, passes in the arguments to be used for the parameters, and specifies what format the result should take (e.g. a report, a graph or a CSV). These requests are serviced by the Gateway which loads the metadata from the metadata store, runs the query/pipeline and generates results as a report, a graph, a CSV and more. The user does not use the Studio and does not access the database directly – only through these encapsulated APIs.
  4. The same APIs can also be used by developers when building other programs, utilities or dashboards. When building utilities the response will usually be in the form of JSON or a CSV; when building dashboards the response will usually be an HTML page or a d3 graph embeddable into an HTML page.

architectureGateway

The Gateway runs within a Tomcat server and can be deployed in a shared server or in the cloud. The same Tomcat server can host both the Studio and the Gateway. Contrary to the Studio the Gateway is not licensed by user but by thread. Therefore, if you have a team of 3 developers building reports, graphs and pipelines that are then used by 100 users, you would typically have 3 JSON Studio subscriptions and a single Gateway with 10 threads.