With Jet Stream, users can control their data. Users can refresh their data from the source, users can bookmark data to rollback to, users can bookmark their data and share those bookmarks with other users so that those uses can access the same data.

In the video

Part I

QA person adds edge case data to a copy of production data

QA person then bookmarks the edge case data and production data

QA person then runs destructive testing

QA person then restores to the bookmark of data just after adding edge case data so they are ready to run destructive tests again

Part II

QA person finds some data that causes a problem and wants to log a bug on it

QA person bookmarks data state with problem data

QA person shares bookmark with developer so the developer can reproduce it

Developer selects bookmark and activates that data set to investigate bug

After adding the edge case data, then we can snapshot the data in Jet Stream:

To snapshot the data state, click the point on the farthest right, then click the bookmark on the bottom left. Give the bookmark at name like “after the edge case data”.

Now the QA person can run destructive testing like removing all the Employees.

After the testing is over, we can go back to the bookmark by clicking on the bookmark, then clicking on “restore”

After the “restore” finishes, then QA is back to the original data, along with edgecase data and can run destructive tests again

Part II

Now imagine the QA person has added some edge case data that causes bugs. For example the QA person could add an employee called ”” (4 single quotes) which comes out ” (2 single quotes) in the list of employees. Now if I try to remove an employee with 2 single quotes, it doesn’t work. So I want to log a bug on this and bookmark not only the application but also the data.

All the QA user does after they have found the problem data is to create a bookmark in the Jet Stream interface and then click on “Share bookmark.”

Then the developer can go into the Jet Stream interface and make this bookmark data active for the developer. The developer’s copy of the bookmark data is private to the developer meaning that the developer can modify the data without affecting the QA analyst and vice versa. This works because all duplicate data blocks are shared but anytime a data block is modified, that modified block is stored separately and is visible only to the copy that made the change.

Step 1

QA bookmarks the data and shares that bookmark.

The QA users clicks on the star on the far right, then on “Bookmark” on the bottom menu. After the bookmark is created, then the QA clicks on the bookmark and clicks “Share” on the bottom menu. Now other users will be able to see the bookmark.

Now the Developer can come in and select bookmarks in the bottom of the screen.

Then select the “Bug XXXX data” bookmark

Then click the branch icon on the bottom right of the screen

After the branch has taken place the “bug XXXX data” will be active for the developer.

What this means is that Delphix has shut down the database and application for the “master” branch that the developer was working on and now the data branch with data from “bug XXXX data” has been started and is active.

By default, Delphix only allows user to have one instance of each virtual database(s) and virtual data source(s) active in a container, thus when a user branches a container, Delphix shuts down the running virtual database(s) and virtual data sources and starts up the database(s) and/or virtual data sources(s).

If the developer clicks on “Branches” on the left side of the screen they will see their original “master” branch and the new “bug XXXX data” branch and the developer can switch between the two

If the developer clicks on the “default” branch, then on “Activate” they will be back to their regular data (the master branch or default branch in this case)

Summary

In summary, Jetstream allows developers and QA analyst to take actions themselves and have results in minutes that would have otherwise required teams of peoples and days of work (DBAs, system admins, storage admins, storage, data copying, recover etc).

We gave two examples here.

Example 1 was a QA person being able to save a data state and run destructive testing and being able to restore to the baseline data state in minutes.

Example 2 was a QA person being able to bookmark a data set the caused a bug and a developer who was able to spin up that application stack and data set in minutes so they could reproduce and investigate the bug.

Jet stream has many more applications.

As a performance person I like to do A/B testing of database. Jet Stream is awesome for that. Jet Stream allows me to create indexes in one copy, drop indexes in another copy, change init.ora parameters in another copy and to be able to switch between these data branches and run comparative performance tests in minutes.

Other examples are a developer who could have branches for

Latest full data set from production

Sub-setted data set from production, used for functional testing of new code

Data set for upcoming release, new schema supports new features

Data set imported from a QA users bookmark, used to fix an important bug

or a software architect who could have data branches for

Database for product A, release scheduled for next month

Database for product A, release scheduled 6 months from now

Database for product A, release scheduled for 1 yr from now

Database for product B, successor to product A

Empty database, brainstorming area for blue sky ideas

Hackathon project

or a business analyst who has data branches for

Latest financial transaction data

Financial transaction data from last week

Financial transaction data from last quarter

Data as a Service functionality brought to you by Jet Stream and Delphix is changing the data dynamics of companies and accelerating application development as well as financial data analysis.