Deepak Vohra

Deepak Vohra

Profile picture for user dvohra

Member for

7 years 1 month

Deepak is a Sun Certified Java Programmer and Web Component Developer, and has worked in the fields of XML, Java programming and Java EE for ten years. Deepak is the co-author of the Apress book Pro XML Development with Java Technology and was the technical reviewer for the O'Reilly book WebLogic: The Definitive Guide. Deepak was also the technical reviewer for the Course Technology PTR book Ruby Programming for the Absolute Beginner. Deepak is also the author of the Packt Publishing books JDBC 4.0 and Oracle JDeveloper for J2EE Development, Processing XML Documents with Oracle JDeveloper 11g, EJB 3.0 Database Persistence with Oracle Fusion Middleware 11g, and Java EE Development in Eclipse IDE. Deepak is a Docker Mentor and has published 5 books on Docker and Kubernetes.

Company
NuBean
Job Function
Development
Job Title
Web Developer
Industry
Computer Software - SaaS
Interests
CI/CD and Containerization
Cloud
Configuration Management
DevOps
Open Source
Performance Testing
Software Development
Test Automation
Testing/QA
Country
Canada

Deepak is a Sun Certified Java Programmer and Web Component Developer, and has worked in the fields of XML, Java programming and Java EE for ten years. Deepak is the co-author of the Apress book Pro XML Development with Java Technology and was the technical reviewer for the O'Reilly book WebLogic: The Definitive Guide. Deepak was also the technical reviewer for the Course Technology PTR book Ruby Programming for the Absolute Beginner. Deepak is also the author of the Packt Publishing books JDBC 4.0 and Oracle JDeveloper for J2EE DevelopmentProcessing XML Documents with Oracle JDeveloper 11g, EJB 3.0 Database Persistence with Oracle Fusion Middleware 11g, and Java EE Development in Eclipse IDE. Deepak is a Docker Mentor and has published 5 books on Docker and Kubernetes.

All Articles by Deepak Vohra


All Stories by Deepak Vohra

one checked box in a list of three boxes Choosing a Storage Engine in MySQL Database

MySQL's storage engine determines how data is stored. InnoDB (the default) is ACID-compliant with row-level locking, ideal for OLTP. MyISAM is best for read-only tasks, while MEMORY offers fast lookups, and ARCHIVE handles long-term storage.

ai framework A Guide to MCP: Providing Context for AI Models

Model Context Protocol (MCP) is an open-source framework that gives AI models context and integrates them with external tools and data sources via a client-server architecture.

A Guide to MCP: Providing Context for AI Models A Guide to MCP: Providing Context for AI Models

Model Context Protocol (MCP) is an open-source framework that gives AI models context and integrates them with external tools and data sources via a client-server architecture.

Markup Languages: What They Are and Why They Matter Markup Languages: What They Are and Why They Matter

Markup languages structure, annotate, and format textual information for electronic devices. From early GML to HTML and XML, they use tags for presentation and data exchange, evolving to meet diverse digital needs like web content, configuration, and data encoding.

Comparing TypeScript with Vanilla JavaScript Comparing TypeScript with Vanilla JavaScript

TypeScript, a JavaScript superset, offers static typing, enhancing debugging and error detection. Though requiring compilation, it provides features like type annotations, generics, and enums, improving code organization and maintainability, especially for large projects.

Java Offers Several Preview Features Java Offers Several Preview Features

Java introduces several preview features designed to improve the developer experience. These include enhancements to constructors, a new class-file API for bytecode manipulation, string templates for easier string composition, and stream gatherers for custom intermediate stream operations.

Autonomous Databases: Self-Driving, Self-Securing, and Self-Repairing Autonomous Databases: Self-Driving, Self-Securing, and Self-Repairing

Autonomous databases, like Oracle's, automate management tasks, eliminating the need for DBAs. They are self-driving, self-securing, and self-repairing, using AI and machine learning for optimal performance and high availability.

An Introduction to Property Graph Query Language An Introduction to Property Graph Query Language

PGQL, a new SQL standard, simplifies querying connected data in relational tables. Oracle 23ai supports PGQL, enabling efficient graph traversal and analysis, offering easier data discovery and deeper insights compared to traditional SQL JOINs.

Unlock the Meaning Behind Your Data with Vector Search Unlock the Meaning Behind Your Data with Vector Search

Vector search is a technique that uses numerical representations of data (vector embeddings) to search for data based on its meaning, rather than just exact word matches. This allows for more accurate and relevant search results.

Running a Data Pipeline with Apache Beam Golang SDK on Docker Running a Data Pipeline with Apache Beam Golang SDK on Docker

This article explains how to run a data pipeline using Apache Beam Golang SDK with Docker. It provides a step-by-step guide on how to install Docker, Golang, and Apache Beam Go SDK, as well as how to run the Wordcount example.

C++ vs. Java: Performance and Control for Modern Development C++ vs. Java: Performance and Control for Modern Development

C++ and Java are giants of programming, but C++ offers unique advantages. This article explores C++'s strengths: direct system access, smart pointers, flexible exception handling, and more. Learn why C++ remains a powerful choice for developers.

Choosing a Java Version How to Choose the Right Java Version for Your Needs

Choosing the right Java version can be tricky. This article explores key factors like supported versions, environment, purpose, bundled options, and recommended updates to guide your decision.

Java Adds Foreign Functions and Memory API Java Adds Foreign Functions and Memory API

Java 20 introduced the Foreign Functions & Memory API in its second preview. The new Foreign Functions & Memory API provides functionality for Java code to interoperate with foreign memory and foreign functions.

Java Introduces Virtual Threads Java Introduces Virtual Threads

In this article we discuss virtual threads that were first introduced in OpenJDK 19, and are now in a second preview in OpenJDK 20.

JDK 20 Introduces Structured Concurrency JDK 20 Introduces Structured Concurrency

The new incubating API for structured concurrency introduces a new style of concurrent programming with several additional benefits.

MySQL Upgrade Became Simpler in 8.0.16

MySQL server upgrading, the process of upgrading the MySQL server after the installation of a new database version, has been fully automated in MySQL 8.0.16.

MySQL 8 Doesn’t Support Some of the Features You May Have Used

We often discuss the new features added in new MySQL versions, but it becomes equally important to discuss the removed features that you’ll no longer be able to use.

telescope Java 20 Brings Scoped Values to Core-Libs

Each new version of Java brings new features for its different components: specification/language, core libs, and the JVM. In this article, we will explore the scoped values feature in the core-libs component.

Resource Groups in MySQL 8 Resource Groups in MySQL 8

Resource Groups, a new feature in MySQL 8 for resource management, are used to define a group for a certain type of threads, and to allocate the resources that threads in a particular group may consume. This results in prioritizing the different groups of threads.

Window Functions in MySQL 8 Window Functions in MySQL 8

Window functions are a new feature in MySQL 8. While most functions operate only on the data pertaining to a single row of data, Window functions operate over a “window” of data when performing a SQL query, and also for each query row.

Creating a New User in MySQL 8 Creating a New User in MySQL 8

In MySql 8, you may create a user that requires multiple authentication methods, uses a random password, with comments and attributes annotated with the user, and configured failed logins.

Common Table Expressions in MySQL 8 Common Table Expressions in MySQL 8

Common Table Expressions (CTEs) are a new feature in MySQL 8.0 to simplify SQL code related to result sets generated by subqueries, offering a better alternative to derived tables.

The New Data Dictionary in MySQL 8.0 The New Data Dictionary in MySQL 8.0

The data dictionary tables do incur some operational and upgrade differences, but the benefits outweigh the overhead.

Java 18 Introduces Simple Web Server

Typically, if you want to serve even a simple HTML file you would need to start an HTTP Server. Java 18 adds a minimal out-of-the-box HTTP Server that doesn't require configuration and setup.

New Non-Language Features in Java 17

Java 17, the latest Long Term Support (LTS) version, has added new non-language features such as pseudo-random number generators.

Choosing a Data Processing Framework

With an assortment of open source data processing frameworks available, it may become a developer’s quandary as to which is the most suitable. More often than not, multiple frameworks are used in the same application.

New Language Features in Java 17

As Java 17 is the latest Long Term Support (LTS) version after Java 11, it is opportune to go over the new language features it adds, some of which had been Preview features in intermediate versions.

MySQL 8.0.x Offers New JSON Features

MySQL database supports a native JSON data type in addition to several JSON related SQL/JSON functions. In this article, we will discuss some of the new JSON features in MySQL 8.x.

Why Use the MySQL Cluster Database

If you need to provide a distributed database that serves several (millions) users, and has a high volume data load, the MySQL Cluster database is the database to use.

Why use JSON Web Token (JWT) in Authentication

JSON Web Token (JWT) is an open, JSON-based standard for securely transmitting information between parties. In addition to secure information exchange, JWT could be used for authentication.

Groovy - Agile Java

Groovy's recent surge in usage (TIOBE index ranking from 26 to 12 between Feb. 2020 and Feb. 2021) could be attributed to the many benefits the language provides. Groovy, like Java, is compiled to JVM (Java Virtual Machine) bytecode. 

Sealed Classes in Java 17

Sealed classes are classes that permit only specific classes to extend them, as a result limiting extensibility. Sealed classes provide several benefits such as: additional modularization, could be used to develop internal classes, could be used to develop proprietary software.

New JVM Features in JDK 11

Java SE 11 is a recent LTS (Long Term Support) version of Java. Java 11 has introduced several other (non-language features), some of which we’ll discuss in this article. 

Computer with code New JVM and Other Libs Features in Java 15

Each new version of the OpenJDK (Java Developer Kit) includes some language features and some non-language JVM (Java Virtual Machine), core-libs, and other libs-related features. Here, we’ll discuss some of the non-language new features in the upcoming OpenJDK 15.

Records Records in Java 14 for Concise Data Carriers

In this article, we explore a preview language feature in Java 14 that improves the design of data carriers, making them simple, concise, and agile.

Pattern Pattern Matching in Java 14 Adds Simplicity

In this article, we discuss a Java feature created to make Java easier, the instanceof operator, which is used to test if an object is a certain type.

Java Script New Features in JavaScript

Here we’ll explore the new features in the most recent version, ECMAScript 2020, which is the 11th edition of the ECMAScript Language Specification.

 

Using R for Data Science: Machine Learning

R is a system for statistical computing and graphics and is commonly used in data science. R is one of the fastest growing languages based on recent TIOBE rankings. R consists of a language, a runtime environment, and a debugger. R programs stored as scripts may be run on the command line or in an IDE such as RStudio

Comparing PHP and JavaScript

PHP and JavaScript are both scripting languages ranked in the top 10 in the TIOBE index. A scripting language is a special-purpose programming language that is used for automating tasks. PHP is designed to be a server-side scripting language, while JavaScript is mainly used for client-side scripting

Java PHP Software Development Comparing PHP and Java

PHP and Java are both languages ranked in the Top 10 in the TIOBE index. In this article, we compare the two languages. PHP is an interpreted language. The Zend Engine that is bundled with the PHP distribution is a scripting engine that interprets PHP scripts as a user has developed them.

Person typing with multiple monitors up with different programming languages Comparing Java and RubyJava and Ruby are both open source languages, and both are ranked in the top 20 of the TIOBE index for most popular programming languages. If you want to learn a new language and are trying to decide between these two, let’s explore common differences in syntax and constructs to discover which may be more useful for you.
Laptop with two windows of code up side by side Comparing Ruby and PHPRuby and PHP are both open source languages, and both are ranked in the top 20 of the TIOBE index for most popular programming languages. If you want to learn a new language and are trying to decide between these two, let’s explore common differences in syntax and constructs to discover which may be more useful for you.
Person test-driving on a simulator Software Features to Avoid in a Production EnvironmentWhen developing an application, it’s best practice not to use certain software features in a production environment. These include features related to programming language, the OS, the database, a framework, a web or application server, or a tool. You have to consider the production setup to avoid bugs or server crashes.
Linux logo Choosing a Linux Distribution for Docker ContainersIn the Linux operating system, each Docker container does not use a complete operating system kernel; multiple Docker containers can share the same one. Which Linux distribution should you use as the host? Let’s look at the factors that govern the choice of a host OS, as well as the Linux to run within a Docker container.
Close-up of database servers Breaking Down Apache’s Hadoop Distributed File SystemApache Hadoop is a framework for big data. One of its main components is HDFS, Hadoop Distributed File System, which stores that data. You might expect that a storage framework that holds large quantities of data requires state-of-the-art infrastructure for a file system that does not fail, but quite the contrary is true.
Shelves storing many books and files Comparing Apache Hadoop Data Storage FormatsApache Hadoop can store data in several supported file formats. To decide which one you should use, analyze their properties and the type of data you want to store. Let's look at query time, data serialization, whether the file format is splittable, and whether it supports compression, then review some common use cases.
Columns of the Parthenon Benefits of Using Columnar Storage in Relational Database Management SystemsRelational database management systems (RDBMS) store data in rows and columns. Most relational databases store data row-wise by default, but a few RDBMS provide the option to store data column-wise, which is a useful feature. Let’s look at the benefits of being able to use columnar storage for data and when you'd want to.
Apache logo Comparing Apache Sqoop, Flume, and KafkaApache Sqoop, Flume, and Kafka are tools used in data science. All three are open source, distributed platforms designed to move data and operate on unstructured data. Each also supports big data in the scale of petabytes and exabytes, and all are written in Java. But there are some differences between these platforms.
Developer typing programming language Comparing XML and JSON: What’s the Difference?XML (Extensible Markup Language) and JSON (JavaScript Object Notation) are the two most common formats for data interchange. Although either can be used to receive data from a web server, there are differences that set them apart. Here are the abilities and support for each option so you can choose what works for you.
Hand pointing at data on a screen Should You Use XML or Protocol Buffers to Store and Exchange Data?XML is a flexible text format used for a wide variety of applications, including data serialization and exchange of data. More recently, protocol buffers were also introduced for data exchange and data serialization. Even though their purpose is the same, these are very different technologies. Which is better for you?
Building with clouds reflected in the windows Choosing a Cloud Storage ServiceWhen choosing storage through a managed cloud service, you should consider several factors: What type of storage is needed? What is the type of application or service? What is the scale of data? What kind of accessibility, availability, and durability do you require? All these aspects should influence your decision.
Dockerfile icon image Exploring Containers: Creating a DockerfileDocker containers are launched using Docker images, which are built from layers of Dockerfiles. A Dockerfile is a text document that contains all the commands or instructions to create, copy, and run an image. Let’s look at what goes into creating a Dockerfile, which could be used to build a runnable Docker image.
Sunlight breaking through clouds Features of Serverless Cloud PlatformsWith the advent of serverless computing, several serverless platforms have become available, precluding the requirement to provision and expose the infrastructure needed on a server-based compute environment. Let’s examine some of the features to expect in a serverless platform so you can know what to prioritize.
Clear lightbulbs showing clouds behind them Choosing a Cloud Computing PlatformWith so many options for cloud computing platforms, it can be tough to narrow them down. Focus on the most important features for your work: Do you want a server-based platform or serverless? What support do you need for your OS and software? What other services do you want integrated? These are the questions to ask.
Apache Cassandra logo What’s New in Apache Cassandra 4.0

Apache Cassandra is an open source, distributed NoSQL database based on the wide column model. The highly scalable, highly available database is great for handling large amounts of data. There is no set release date yet for the next version, Cassandra 4.0, but we do already know about several new features.

Aerial shot of a container lot Using More Advanced Kubernetes ControllersKubernetes is an object-oriented framework for orchestration of Docker containers. While running basic Kubernetes objects like pods and services is essential to all Kubernetes applications, what controller to use should be based on several factors. Let’s explore some advanced controller options for additional features.
Stacked black and white blocks Using Basic Kubernetes ObjectsKubernetes is an object-oriented framework for orchestration of Docker containers. The Kubernetes API supports several different types of objects and provides schemas for all the objects it supports. While there are many options for different features, let’s look at some of the main Kubernetes objects and their uses.
Shipping storage containers Choosing Volumes for Kubernetes StorageFor data storage with Kubernetes, pod-based storage is not persistent, so external storage is necessary. A volume is a directory that is accessible to all containers in the pod, and it exists as long as the pod exists. Several types of volumes are supported, so let's explore some of these Kubernetes storage options.
A ship with organized containers on deck Choosing a Container Orchestration Platform with DockerDocker is the de facto container platform, supporting the microservices architecture for deploying loosely coupled applications. However, Docker supports several container orchestration platforms—which should you choose? Let’s look at some of the main platforms: Kubernetes, Docker Swarm, OpenShift, Mesos, and CFCR.
Engineer holding laptop in a data center Reasons to Use a NoSQL DatabaseSQL is used to query a relational database, where data is organized into relations. But relational databases do not meet the needs of web-scale information systems—this is where NoSQL storage and retrieval information systems come in. Let's look at the differences between SQL and NoSQL and when you would use either.
Person holding a magnifying glass Choosing a Search Engine DatabaseA search engine database indexes data in addition to storing it, so users are able to search collections of data using keywords. The features here are common to most search engine databases, so when deciding which is best for your use, determine what factors are most important and pick one that prioritizes your needs.
Kubernetes logos in the cloud Should You Use a Managed Cloud Service for Kubernetes?Kubernetes is the number one container orchestration platform, as it’s suitable for deployment, scaling, and management of containerized applications. Several managed cloud-based services are available for Kubernetes, but are they right for your situation? Let’s look at the benefits and drawbacks of these services.
Limitations of a Managed Cloud Database ServiceWith the advent of cloud computing, several managed services for databases have become available. Whether to use a managed cloud database service from a cloud provider depends on several factors, and it may not be the best choice for everyone. Knowing the limitations can help you decide whether it makes sense for you.
Person comparing two similar apples Choosing between MySQL and PostgreSQLMySQL and PostgreSQL are the top two open source relational databases, and they have a lot in common. So how can developers choose between them? The application should guide the features that need to be prioritized. Here’s how the two databases compare with regard to the features that most relational databases support.
Shipping containers Why Choose Containerization?Containers have been adopted by many organizations. Docker is the most popular and has become the standard containerization platform, though there are others. But why use containerization? What are the advantages that spurred its adoption? Let’s look at some of the factors that govern the choice of containerization.
Big data code When to Use MapReduce with Big DataMapReduce is a programming model for distributed computation on big data sets in parallel. It's a module in the Apache Hadoop open source ecosystem, and a range of queries may be done based on the algorithms available. Here's when it's suitable (and not suitable) to use MapReduce for generating and processing data.
Road leading toward clouds Migrating to the Cloud: Which Model Is Right for You?Cloud computing is a relatively recent trend, and several organizations have opted to migrate their services and data to the cloud. Which of the cloud computing models available is right for which situation? Let’s look at the three options—public, private, and hybrid—and discuss when it's a good idea to use each one.
Colorful gears automating processes Continuous Automation, from Source Code to ProductionAutomation is necessary to achieve the benefits of DevOps principles, so teams may use automation at every step of software development. Depending on how frequently and confidently a team deploys code, they can use automation to enable continuous integration, continuous delivery, and, finally, continuous deployment.
Engineer standing next to rows of database servers Migrating a Database? Consider These Factors FirstDatabase migration is usually performed with a migration tool or service. Migrating one database to another actually involves migrating the schemas, tables, and data; the software itself is not migrated. Whatever the reason for migration, before you start, explore the options and take these considerations into account.
Lines of data in a spreadsheet Before Data Analysis, You Need Data PreparationOne of the prerequisites for any type of analytics in data science is data preparation. Raw data usually has several shortcomings in structure, format, and consistency, so first it has to be converted to a usable form. These are some types of data preparation you can conduct to make your data useful for analysis.
Apache Hadoop logo Exploring Big Data Options in the Apache Hadoop EcosystemWith the emergence of the World Wide Web came the need to manage large, web-scale quantities of data, or “big data.” The most notable tool to manage big data has been Apache Hadoop. Let’s explore some of the open source Apache projects in the Hadoop ecosystem, including what they're used for and how they interact.
NoSQL database When to Use Different Types of NoSQL DatabasesWeb-scale data requirements are greater than at a single organization, and data is not always in a structured format. NoSQL databases are a good choice for a larger scale because they're flexible in format, structure, and schema. Let’s explore different kinds of NoSQL databases and when it’s appropriate to use each.
Building with clouds reflected on the side Selecting a Cloud ServiceCloud services are relatively new, and for those used to downloading and installing software, it may be daunting at first when trying to figure out which cloud service to use. Let’s analyze the different options—infrastructure as a service, platform as a service, and software as a service—and when you should use each.
Virtual machine Explaining Hardware Virtualization and ContainerizationVirtualization is the abstraction of a computer resource—such as hardware, memory, storage, an operating system, a desktop machine, or a network—built on top of the physical resource. There are many types of virtualization, and here, we look at virtualization of hardware and of an operating system, or containerization.
Databases Selecting a Database for Your Data NeedsData requirements vary, and with so many different types of databases, selecting which to use can be a tricky choice. It all depends on what your database will be used for, the data structure, and the scale of data. Let’s look at six popular database types so you can decide which would be best for your situation.
"Does not equal" sign Agile Is Not the Same as DevOpsAgile and DevOps are two terms that are often confused with each other and sometimes used interchangeably. But they are not the same idea. While both improve software performance, these concepts are actually quite different. Let's look at their definitions, origins, and principles, as well as using each in practice.
Multiple pipelines Using a Multibranch Jenkins Pipeline with DockerTypically, code for a Docker image is developed using multiple GitHub branches, with each branch being the code for a single Docker image tag. However, having to create and run a Jenkins pipeline for each GitHub branch can be cumbersome. Try a multibranch pipeline to integrate multiple GitHub branches simultaneously.
Phalcon logo Using the Phalcon PHP Framework with MySQLSome PHP frameworks now support the model-view-controller (MVC) design pattern, most notably the open source Phalcon framework. Phalcon has the lowest level of overhead due to memory and CPU for MVC applications, and it supports object-relational mapping features. Here's how you can get started with Phalcon and MySQL.
Helm charts for Kubernetes Using Kubernetes Helm Charts for Increased DevOps CollaborationA Docker image is usually designed for a baseline functionality and can then be customized. However, customized resource definitions are typically not shared among other users who might have a similar application requirement. Here’s where Helm charts for Kubernetes can help reduce rework and increase collaboration.
Kubernetes logo Why Use Kubernetes for Your Container Management?Kubernetes is the most commonly used open source orchestration framework for containers. It’s used for automating deployment, scaling, and management of application containers and works with many container tools, including Docker. But what makes Kubernetes so popular? And would it be useful to you? Let's take a look.
Stack of servers with an X over them The Advantages of Serverless Cloud ProvidersMost cloud providers have server-based computing services. But that requires servers to be provisioned and administered, and servers have a fixed capacity to operate within. A new DevOps trend is to go serverless—however, this doesn’t mean no servers are used at all. Learn more about this model and its advantages now.