Open Acadmey
Database Course
RDBMS/SQL
MySQL Course
Part – I
Introduction
Course Introduction
Why MySQL?
DBA vs Developer Course
MySQL Server Installation
Preparing VM for MySQL Server Installation
Installing MySQL Server Community Edition
Installing MariaDB Database Server
Installing Percona Server for MySQL Server
Manually Download RPMs and Locally Install
Demo - Performing MySQL Secure Installation
Installing MySQL on Ubuntu
Exploring MySQL Server
MySQL Architecture
MySQL Installed File Locations
MySQL Executable Programs
MySQL Service under SystemD
MySQL Shell Commands
MySQL Socket File
MySQL GLOBAL Variables
MySQL SESSION Variables
MySQL SHOW Command
MySQL Local vs Remote Connections
MySQL Shell
Basic MySQL Database Administration
Storing MySQL Authentication Credentials
mysqladmin - MySQL Administration Program
Executing SQL Files
Importing data with mysqlimport
Maintaining Integrity with mysqlcheck
Displaying useful Information with mysqlshow
Time Zone Tables
MySQL Example Databases
Demo - Download World Database
Listing Binary Logs Events with mysqlbinlog
Part -II
MySQL Storage Engines
Storage Engines
FEDERATED Storage Engine
MEMORY Storage Engine
BLACKHOLE Storage Engine
CSV Storage Engine
MyISAM Storage Engine
ARCHIVE Storage Engine
InnoDB Storage Engine
Checking Storage Engine Status
Switching Storage Engine
Installing New Storage Engine
Disabling Storage Engine
MySQL User Administration
DBA Account
MySQL Permissions
WITH GRANT OPTION
Connecting to MySQL
Exploring MySQL Workbench
Creating Regular MySQL Users
Grant Permissions
Lock/Unlock MySQL Account
mysql_native_password & caching_sha2_password auth plugins
MySQL Roles
MySQL Server Configuration
MySQL Default Configuration File
MySQL Option/Configuration File Syntax
Assignment - Re-Write Default Option File
Variable or Option in Option File?
Changing Default Option Files Location
Assignment - Change Default Location of Option File
STRACE & LSOF With MySQL
Option File Inclusions
DATA_DIR MySQL Data Directory
Binary Log Files
Purging Binary Log Files
Binary Logs Retention
InnoDB Storage Engine Configuration
InnoDB Storage Engine
InnoDB Architecture
InnoDB Buffer Pool
InnoDB Log Buffer
InnoDB Flush Method
O_DIRECT OR O_DIRECT_NO_FSYNC
Doublewrite Buffer
Flushing Logs at Transaction Commit
InnoDB Redo Log Files
System Tablespace
Undo Tablespaces
Temporary Tablespaces
General Tablespaces
File-Per-Table Tablespaces
Dedicated MySQL Server
Turning Dedicated Server ON
Part – III
MySQL Backup & Restore
MySQL Backups
Physical/Cold Backup
Files needed for Cold Backup
Logical Backups
MySQLDUMP Backup Program
Restoring from MySQLDUMP
MySQLPUMP Backup Program
Compressing MySQL Backups
Creating Consistent Data Dump
CREATE TABLE LIKE SQL Statement
MySQL Hot Backup
MySQL Hot Backup Tools
XtraBackup Hot Backup Tool
Preparing Hot Backup Restore
PostgreSQL Course
Part – I
Introduction
PostgreSQL Introduction
Installing PostgreSQL v15 on Windows and Linux
PostgreSQL System Requirement
Installing PostgreSQL v15 on Windows
Setup PostgreSQL Environment Variable on Windows
Installing PostgreSQL v15 on Linux
Setup PostgreSQL Environment Variable on Linux
PostgreSQL Architecture
Process and Memory Architecture
Postmaster Process
Utility Processes
Memory Segments
Physical Files in PostgreSQL
Database Cluster
PostgreSQL Cluster (Initdb, Start/Stop/Restart/Reload)
PostgreSQL Cluster Demo on Windows
PostgreSQL Cluster Demo on Linux
PostgreSQL Directory Layout and Configuration Files
Database Directory Layout
Base Directory
PostgreSQL.conf
PostgreSQL.Auto.conf
Pg_Ident.conf
Pg_Hba.conf
Create Objects(Database/User/Schema) and Privileges & CURD Operations
Create/Drop Database
Create/Drop User
Create/Drop Schema and Search Schema Path
Grant/Revoke Privileges on Database Objects
CRUD Introduction
Create Table, Data Types, Constraints, Functions and Operators
Retrieve Data in PostgreSQL
Update Records in a Table
Delete Records in a Table
Table Inheritance
Table Partitioning using Inheritance
Copy Table
Using Psql Command Line and PG system Catalog
Psql Commands
Pg_Catalog & Time zones in PostgreSQL
Tablespace
Tablespace
Introduction
Create Tablespace on Windows and Linux
Move Objects from Tablespace and Drop a Tablespace
Temporary Tablespace in PostgreSQL
Backup and Restore
Introduction to PostgreSQL Backups
Logical Backups on Windows and Linux
How to Compress and Split Dump Files
Restore Database using Logical Backups through Psql Interface
Restore Database using Logical Backups through Pg_Restore Utility
Offline Backups
Introduction to Online Backups
Setup Continuous Archiving In Windows
Setup Continuous Archiving In Linux
Online Low Level API Backup
Pg_Basebackup Utility
Point-In-Time-Recovery(PITR)
Part – II
Maintenance in PostgreSQL
Introduction to Maintenance
How to Calculate Query Cost and Explain Plan
Updating Planner Statistics\Analyze
Vacuum Freeze
Data Fragmentation
Introduction to Vacuum and Vacuum Full
Transaction ID Wrap Around Failure
How to Vacuum a Database and Remove Data Fragmentation
Routine Re-Indexing
How to Cluster a Table
Auto-Vacuum in PostgreSQL
Introduction to Pgadmin 4 and Other Utilities
Pgadmin 4 - Demo
Introduction to PostgreSQL Upgrade
PostgreSQL Upgrade using PG_Dumpall Utility.
Introduction to PG_Upgrade Utility
PostgreSQL Upgrade using PG_Upgrade Utility
Journey into Postgresql
Introduction to Postgresql v16
Postgresql v16 - New Features
NoSQL
MongoDB Course
Part – I
Introduction
What is MongoDB
Why should we learn MongoDB
important Features of MongoDB
Installation & Configuration of MongoDB
Installation Guide
Installation Of MongoDB In Linux
Connecting To Server & Database Management
Connecting to Server Using mongo shell
Creating Database
Drop Database
Managing Collections
Creating Collection
Creating Indexes : Concepts
Dropping Indexes
Creating Capped Collections
CRUD Operations
Creating or Inserting Documents to the collection
Reading or Selecting Documents
Updating Documents : Concepts
Deleting Documents
Securing MongoDB & Auditing
Starting MongoDB with authentication : Concepts
Creating Regular User
Built-in Roles : Concepts
Create User Defined Roles
Assigining Roles To Users
Assigining Privileges To Users
Addintional User Management Options
Changing User Pasword
Enabling Auditing on mongodb server
Part – II
Server Administration
Starting Mongod Server with command line options
Binding Mongod Server to an IP address
Starting mongodb using a configuration file
Backup and Recovery
Utilities For Logical Backup and Recovery
Taking Backup of collection using mongoexport
Restore A Collection using mongoimport
Restore from a CSV file using mongoimport
Migrate Oracle Table into mongodb collection
Database Backup & Restore Using mongodump and mongorestore
Restore Database Using Mongorestore
Performing a database refresh
Replication
Introduction To Replication In MongoDB
Configuring Replicaset : Concepts
Testing Replication
Testing Failover
Adding or removing replicatset members
Reconfiguring Replicaset
Sharding
Introduction to Sharding
Configuring Sharding : Concepts
MongoDB Cloud Solutions
Introduction To MongoDB Cloud Solutions
Instaling Mongodb on AWS EC2 Using Free Tier account
Connecting To MongoDB running on EC2 Instance
MongoDB Atlas : Deep Dive
Creating First Cluster in Atlas
Working with atlas cluster database
Cassandra Course
Introduction: Cassandra as a distributed, decentralized, columnar store
A Column-Oriented Database
Requirements For A Product Catalog System
What Is Cassandra?
Cassandra Vs HBase
Install And Set Up
Install Cassandra (Mac and Unix based systems)
Install the Cassandra Cluster Manager (Mac and Unix)
Install Maven On Your Machine
Path and other Environment Variables
The Cassandra Cluster Manager & Data Model
Create A Cassandra Cluster On Your Local Machine
Basic CCM Commands
Columns And Column Families
Super Column Family And Keyspace
Comparing Cassandra With A Relational Database
Shell Commands
Connect To Cassandra And Create A Keyspace
Column Families And Their Properties
Modify Column Families
Insert Data Into A Column Family
Advanced Data Types: Collections And Counters
Update Simple And Collection Data Types
Manage Cluster Roles
Keys And Indexes: Primary Keys, Partition Keys, Clustering Key, Secondary Indexes
Partition Keys: Distributing Data Across Cluster Nodes
Partition Keys: Properties
Clustering Keys: Data Layout On A Node
Restrictions On Partition Keys
Restrictions On Clustering Keys
Secondary Indexes
Restrictions On Secondary Indexes
Allow Filtering
Tunable Consistency
Write Consistency Levels And Hinted Handoff
Read Consistency Levels
Replication Factors And Quorum Value
Storage Systems
Overview Of Cassandra Storage Components
The SSTable And Its Components
Row Cache And Key Cache
Anatomy Of A Write Request
Anatomy Of A Read Request And The Gossip Protocol
Redis Course
Part – I
Introduction
Course Introduction
Introduction To Redis
Getting Started
Installing Redis on Windows
Installing Redis on Linux
Starting and Shutting Down Redis Server
Getting Server Information
The Redis CLI
Redis Data Management
Redis Keys and Values
Deleting Keys
How to check if a key exists or not
How to define keys with expiration
How to remove expiration from a key
How Redis handle keys expirations
Key Spaces
Keys naming conventions
Keys pattern matching - KEYS
Saving keys information on server
Rename a Key - RENAME
Rename a key with caution using RENAMENX
Deleting Keys Asynchronously via UNLINK
How to find data type of a key value - TYPE
Redis Data Structures - Strings
Introduction to data types
Redis Strings and their use cases
String Key definition for an app, and a shop
Counting numbers using INCR and DECR
Counting floating point numbers
Using APPEND as list of timeseries data
Setting and getting multiple keys via MSET, MGET, MSETNX
Using GETSET for an atomic reset
Extract string value via GETRANGE
Replace string value using SETRANGE
Set Key and expiration using SETEX and PSETEX
Set key if not exists using SETNX
String Encoding types
Using serialized JSON data
Scanning Keys with SCAN
Redis Lists
Introduction to lists
Creating a list using LPUSH, RPUSH
View latest stock prices via LINDEX
Insert an element via LINSERT
Remove elements via LPOP and RPOP
Trim a list using LTRIM
Update an element value via LSET
Find length of a list via LLEN
Find matching elements via LPOS
Remove element via LREM
Move elements between lists via LMOVE
Redis Hashes
Introduction to Hashes
Using HSET, HGET and HGETALL for hashes
Get multiple fields values via HMGET
Find length of a hash via HLEN
Delete fields via HDEL
Use HEXISTS to check if a field exist
Get all fields name via HKEYS
Get all fields values via HVALS
Counting via HINCRBY and HINCRBYFLOAT
Using HSETNX to add a new field
Get random fields via HRANDFIELD
Redis Sets
Introduction to Sets
Are sets are unique, and un-ordered
Using SETS for unique data
Sets Maintenance - SADD, SREM, SPOP
Checking a membership existence
Get random elements via SRANDMEMBER
Moving elements within sets via SMOVE
Sets Operations - Union
Sets Operations - Union and store results with SUNIONSTORE
Sets Operations - Intersection
Sets Operations – Difference
Redis Sorted Sets
Introduction to Sorted Sets
Using ZADD and ZRANGE
Display data in reverse score order
Atomic operations by ZINCRBY
Lexicographical order
Rank stocks with ZRANK
Redis HyperLogLog
Introduction to HyperLogLog
Unique Website visitors via HyperLogLog
Publish/Subscribe Model
Introduction to Publish/Subscribe Model
Setup a Publish/Subscribe communication
Patterned Subscription
Channel management via PUBSUB
Unsubscribe from a channel or channels
Part – II
Designing Databases in Redis
From a RDBMS Table to Redis Data Structure
From multi primary keys to Redis Structure
Redis Protocol
Introduction to Redis Protocol
Turning strings into Redis Protocol Specifications
Generating Redis Protocol commands using python
Redis Administration
Inspect internal Redis objects via OBJECT
Dump and Restore Keys
Checking command history
Using redis-cli to scan keys
Using bash to get all keys and values
Using URL, echo to list all keys
Connecting with Python - Getting Keys
Redis Replication & Cluster
Introduction to Replication and Scalability
Setting up Master/Slave Replication
How replication works
ROLE Command
Redis Cluster Data Sharding
Setup and configuration of 4 nodes
Launch a cluster with nodes
High availability in cluster
What is a cluster node ID
Adding a node to a cluster
What happens when a slave is shutdown
Using Redis-cli to find cluster information, nodes and more
Using CLUSTER NODES, CLUSTER SLOTS commands
Using CLUSTER INFO, MYID and REPLICAS commands
Find a hash slot number of a keys and Keys in slots
Shutdown a cluster
Part – III
RediSearch
Introduction to RediSearch
Using RediSearch on Movies Database
Adding sample movies data via hashes
Creating an index
Query data with RediSearch
fuzzy logic and search by value
Value range searches
Counting total records/documents
Insert, Update, Delete and Expire Documents
Manage Indexes
Import sample movies datasets
Creating Indexes on movies database
Using @fieldname with and without contains
Search with OR criteria
Search condition1 AND (condition2 OR condition3)
Numerical Conditions
Sort data with SORTBY
Limiting results using LIMIT
Aggregation with FT.AGGREGATE
Grouping data
Grouping, reducing and sorting data
Grouping with multiple reduce functions SUM, AVG
Transforming aggregated data using APPLY function
View APPLY Function visually
APPLY Function with date transformation
Using FILTER to filter data
Filter on resultsets
Create custom indexes via FILTER
RedisInsight
Setup RedisInsight
View Database and Keys
Add/Update/Delete a key Value
Set an expiry to a key
Add a new key
Using CLI
View Database Information
Elasticsearch Course
Introduction
Introduction to Elasticsearch
Understanding of the Elastic Stack
Getting Started
Overview of installation options
Setting up Elasticsearch & Kibana on Linux
Setting up Elasticsearch & Kibana on Windows
Understanding the basic architecture
Inspecting the cluster
Sending queries with CURL
Sharding and scalability
Sharding
Understanding
replication
Replication
Adding more nodes to the cluster
Overview of node roles
Managing Documents
Creating & deleting indices
Indexing documents
Retrieving documents by ID
Updating documents
Scripted updates
Upserts
Replacing documents
Deleting documents
Understanding routing
How Elasticsearch reads data
How Elasticsearch writes data
Understanding document versioning
Optimistic concurrency control
Update by query
Delete by query
Batch processing
Importing data with cURL
Mapping & Analysis
Introduction to analysis
Using the Analyze API
Understanding inverted indices
Introduction to mapping
Overview of data types
How the "keyword" data type works
Understanding type coercion
Understanding arrays
Adding explicit mappings
Retrieving mappings
Using dot notation in field names
Adding mappings to existing indices
How dates work in Elasticsearch
How missing fields are handled
Overview of mapping parameters
Updating existing mappings
Reindexing documents with the Reindex API
Defining field aliases
Multi-field mappings
Index templates
Introduction to dynamic mapping
Combining explicit and dynamic mapping
Configuring dynamic mapping
Dynamic templates
Mapping recommendations
Stemming & stop words
Analyzers and search queries
Built-in analyzers
Creating custom analyzers
Adding analyzers to existing indices
Updating analyzers
Searching for Data
Introduction to searching
Introduction to term level queries
Searching for terms
Retrieving documents by IDs
Range searches
Prefixes, wildcards & regular expressions
Querying by field existence
Term level queries
Introduction to full text queries
The match query
Introduction to relevance scoring
Searching multiple fields
Phrase searches
Full text queries
Leaf and compound queries
Querying with boolean logic
Query execution contexts
Boosting query
Disjunction max (dis_max)
Querying nested objects
Nested inner hits
Nested fields limitations
Compound & nested queries
Joining Queries & Controlling Query Results
Introduction to this section
Add departments test data
Mapping document relationships
Adding documents
Querying by parent ID
Querying child documents by parent
Querying parent by child documents
Multi-level relations
Parent/child inner hits
Terms lookup mechanism
Join limitations
Join field performance considerations
A word on document types
Specifying the result format
Source filtering
Specifying the result size
Specifying an offset
Pagination
Sorting results
Sorting by multi-value fields
Filters
Aggregations
Introduction to aggregations
Metric aggregations
Introduction to bucket aggregations
Document counts are approximate
Nested aggregations
Filtering out documents
Defining bucket rules with filters
Range aggregations
Histograms
Global aggregation
Missing field values
Aggregating nested objects
Improving Search Results
Introduction to this section
Proximity searches
Affecting relevance scoring with proximity
Fuzzy match query (handling typos)
Fuzzy query
Adding synonyms
Adding synonyms from file
Highlighting matches in fields
Stemming
Vector Course
Introduction
Introduction to Vector Database
Vectors and Embeddings
Explain vector database like I’m 5
How vector database store data
How do vector database works?
Vectors in 2D
The power of embeddings
Create embeddings using OpenAI
Sentence Embedding Models
Using SQLite as vector storage
Setup and basic operations
Creating, storing and retrieving vector data
Finding nearest vector
Vector search using sqlite-vss extension
ChromaDB
Introduction to ChromaDB
Revolutionizing the Data access with Vector Database
Methods on collections
Storing "The Matrix" collections
Adding document associated embeddings
Query data with 'where' filter
Facebook AI Similarity Search (FAISS)
Introduction to FAISS
Using similarity search for nearest neighbors
Pinecone
Introduction to Pinecone
Setup account, create an index, dashboard review
Understanding index creation configuration
Index management
Insert vector data to an index
Query vector data
Upsert vector data in batches
Upsert batches in parallel
Upsert with metadata
Vector IDs must be string
Sentence transformer embeddings
Semantic search with metadata filtering - news articles
Qdrant
Introduction to Qdrant vector database
Connect with APIs
Create a qdrant python client
Create a collection
Create a vector store
Add document to vector store on the cloud
Query the document
Create a streamlit QA app
Server Course
Linux Administration
Part – I
Overview
Course Overview
Installing and Connecting to a Linux System
Linux Distributions
Installing Linux using WSL on Windows (Windows Subsystem for Linux)
Installing VirtualBox on Windows
When to Install Linux from Scratch or Manually
Logging In Directly to a Linux System
Linux Fundamentals
The Linux Directory Structure
The Shell
Essential Linux Commands / Basic Linux Commands
Getting Help at the Command Line
Working with Directories
Listing Files and Understanding LS Output
File and Directory Permissions
Finding Files and Directories
Viewing Files and the Nano Editor
Editing Files in Vi
Editing Files with Emacs
Graphical Editors
Deleting, Copying, Moving, and Renaming Files
Input, Output, and Redirection
Comparing Files
Searching in Files and Using Pipes
Transferring and Copying Files over the Network
Customizing the Shell Prompt
Shell Aliases
Environment Variables
Processes and Job Control
Scheduling Repeated Jobs with Cron
Switching Users and Running Commands as Others
Shell History and Tab Completion
User Management
Managing Users and Groups
User Management
Part – II
Disk Management
Creating Partitions with fdisk
File Systems
LVM – The Logical Volume Manager
Introduction to the Logical Volume Manager (LVM)
Creating Physical Volumes (PVs), Volume Groups (VGs), and Logical Volumes (LVs) Extending Volume Groups and Logical Volumes
Mirroring Logical Volumes
Removing Logical Volumes, Physical Volumes, and Volume Groups
Migrating Data from One Storage Device to Another
Networking
TCP/IP Networking for Linux System Administrators
Networking - DNS and hostnames
Networking - DHCP, Dynamic and Static Addressing
Network Troubleshooting
Shell Scripting
Shell Scripting Overview
Shell Scripting
Advanced Command Line Skills - Command Line
Tab completion
Repeat as Root
Rerun a command starting with a string
Reuse arguments
Strip out comments and blank lines
Reuse the last item from the previous command
Connecting to Linux over the network using SSH
Connecting to a Linux Virtual Machine Over the Network
Network Course
Networking
Part – I
Introduction
Course Introduction
Understanding, Implementing, and Troubleshooting IPv4
Introduction
What is an IPv4 Address
What is a MAC Address
Understanding ARP
OSI Model
Layer 2 and Layer 3 Switches
Understanding Binary Code
Binary Challenge
Overview of IPv4 Addressing
Classful IP Addressing
Subnet Mask Chart
Subnetting
Public and Private IP Addressing
Network Address Translation (NAT)
Demo: Network Address Translation (NAT)
TCP Flow Control
Configuring IPv4 on Client Devices
Managing and Troubleshooting IPv4 Network Connectivity
Introduction
IPv4 Troubleshooting Methodology
IPv4 Troubleshooting
TraceRT and PathPing
Network Diagnostics
WireShark
WireShark
Part – II
Understanding Active Directory Domain Services and DHCP (Dynamic Host Configuration Protocol)
Understanding Active Directory
Introduction to DHCP
How DHCP Works
Benefits of using DHCP
How DHCP Lease Generation Works
How DHCP Lease Renewal Works
Deploying DHCP
Deploying DHCP Overview
Installing the DHCP role
Demo: DHCP Installation
DHCP Authorization
Demo: DHCP Authorization
Understanding Scopes
DHCP High Availability
Maintaining the DHCP Database
Understanding and Implementing (DNS) Domain Name Service
Introduction to DNS
How DNS name resolution works
DNS Resolution Process PPT
DNS Components
DNS Zones and Records
Configuring DNS Clients
Configuring Zones in DNS
Zone Configurations
Creating Records in DNS
Configuring DNS Zones
Zone Types
Active Directory Integrated Zones
Stub Zones
Root Hints
DNS Forwarding
Storage Technology
Storage
Introduction
Introduction to Storage Concepts
Types of Storage and Terminologies
RAID Concepts
Backup Fundamentals
Storage Protocols
Introduction to Storage
Understanding NAS Concepts
Understanding SAN Concepts
Disk Configuration
Differences of traditional RAID
Storage Manager
Creating a Volume Overview + Synology Hybrid Raid (SHR)
Hot Spares
Shared folder and permissions
Delete a Volume & Storage Pool
Setup of VMware Datastore
Updates and Notifications
Resource Monitor
Logs
Email Notification
Security Advisor
DSM Updates
Manually Updating DSM
Services and Operations
Users and Groups - Local & Domain
Integrate with AD
External devices
Hardware + Power Settings
DHCP Server
Task Scheduler
SSH into NAS
Failed Disk Replacements