Description
NoSQL technology was pioneered by leading internet companies — including Google, Facebook, Amazon, and LinkedIn — to overcome the limitations of 40-year-old relational database technology for use with modern web applications. Today, enterprises are adopting NoSQL for a growing number of use cases, a choice that is driven by four interrelated megatrends: Big Users, Big Data, the Internet of Things, and Cloud Computing.
Couchbase has established as one of the databases NoSQL market leaders, being used by developers around the world to build and create web business, mobiles and Internet of Things applications that support huge and massive volumes of data at real time.
This course focus on architecture and design of NoSQL data using N1QL. Focusing on data modeling, query, storage and access for robust, scalable, high-performance NoSQL applications.
PUE is Couchbase Official Training Partner authorized by Couchbase to deliver official training in Couchbase NoSQL technologies.
Furthermore, PUE is accredited and recognized to offer consulting and mentoring services on the implementation of Couchbase solutions for business environment with the consequent added value in the practical and business knowledge delivered in their official courses.
Audience and prerequisites
This course is intended for application developers, architects, software engineers, database administrators, data warehouse managers, business intelligence analysts, data engineers, and DevOps professionals seeking to use Couchbase for data modeling, storage, and retrieval.
Familiarity with basic programming fundamentals and data concepts is assumed, but no prior experience with NoSQL databases (or with SQL datbases) is required.
Objectives
The course aims that students learn about the storing and accessing data rapidly and at web scale, in diverse document-database use cases based on JSON, using Couchbase Server, N1QL, and related technologies.
Topics
1. Welcome to the Course
2. Introduction to NoSQL
- Modern Application Challenges
- Growth of Digital Data
- Why Not Use a Relational Database?
- What is Big Data?
- Common Strategies for Handling Big Data
- ACID Properties in Relational Databases
- BASE
- The CAP Theorem
- Hadoop and NoSQL
- Types of NoSQL
- Polyglot Programming
3. Introduction to Couchbase
- History of Couchbase Server
- NoSQL and Couchbase Server
- What is Couchbase Server?
- JavaScript Object Notation
- Couchbase as Key-Value Store vs. Document Store
- Storage of Data in Couchbase Server
- Couchbase Server Architecture
- What is a Couchbase Document?
- Anatomy of a Couchbase Application
- Read, Write and Update Operations with Couchbase
- Cache Miss
- The Couchbase “write path”
- Scaling with Couchbase
- MDS Architecture
- Tools to Integrate with Couchbase
4. N1QL Essentials
- JavaScript Object Notation
- Json As Database Storage Format
- Relational Model Vs. JSON
- What is N1QL?
- Goals of N1QL
- Who Uses N1QL
- Query Workbench
- CBQ
- Key features of N1QL
- Querying with N1QL
- SELECT Query
- Querying Nested Elements
- Document Meta-Data
- Performing Simple Arithmetic
- Filtering Documents
- Pattern Matching
- NULL and MISSING Values
- Matching Elements in Nested Arrays with ANY
- Querying Using Document Keys
- Sorting, Ordering and Grouping
- Unnest
- Getting System Information
- Querying Datastores
- Querying Namespaces
- Querying Keyspaces
- Querying Indexes
- Array, Objects and Array of Objects
- Collection Operators
- Functions in N1QL
- ARRAY_APPEND(expression, value, ...)
- ARRAY_INTERSECT(expression1, expression2, ...)
- DATE_ADD_MILLIS(date1, n, part)
- Other Date Functions
- Pattern-Matching Functions
- Token Functions
- String Functions
- Subqueries
- Joins
- Join Documents from a Key Array
- Data Manipulation Statements
5. Indexes in N1QL
- Index Options
- Primary Index
- Named Primary Index
- Secondary Index
- Secondary Composite Index
- Functional Index
- Array Index
- Partial Index
- Covering Index
- Duplicate Index
- Intersect Scans in N1QL
- Bucket Analysis
- The INFER command
- Indexing Architectures
- GSI Vs. Views
6. Query Engine
- Query Execution
- Client to Query Service: REST API
- The Parse Phase
- Plan Phase
- Scan Phase
- Fetch Phase
- Joins
- Filter
- Aggregate, Sort, Offset, Limit
- Project Phase
- Covered and Non-Covered Indexes
- Capacity Management of Query Node
7. Query Planning and Tuning
- Query Planning
- Data Source Access Methods
- Index Selection
- Index Scans – Covering and Regular Index Scans
- Index Scans – CountScan and IndexCountScan
- Index Scans – ValueScan and DummyScan
- Pushdowns - Predicates
- Pushdowns - Order
- Pushdowns - Limit
- Pushdowns - Offset
- Query Tuning in N1QL
- Query Tuning Checklist
8. N1QL Performance Tricks and Other Tools
- Pretty – Query Setting
- UPDATE Nested Arrays
- cURL in N1QL
9. Introduction to Data Modeling
- What is Data Modeling?
- Data Modeling for Distributed Systems
- Data Modeling for Couchbase Server
- Conceptual Data Modeling
- Logical Data Modeling
- Physical Data Modeling
- Data Models Used In The Course
10. Data Modeling for Couchbase Server
- What is Data Modeling?
- Data Modeling for Distributed Systems
- Data Modeling for Couchbase Server
- Conceptual Data Modeling
- Logical Data Modeling
- Physical Data Modeling
- JSON Document Design
- JSON Design Choices
- Single Root Attributes
- Objects vs. Arrays
- Array Element Types
- Timestamp Formats
- Property Names
- Empty and Null Property Values
- JSON Schema
- Data Nesting (aka Denormalization)
- Key Design
- Lookup Key Pattern
- Making Trade-offs
- Making tough choices: Document Size, Atomicity, Complexity, Speed
- Embed vs. Refer
11. Query Monitoring and Troubleshooting
- What is Query Monitoring?
- REST API Endpoints in N1QL
- Vitals
- REST: active requests
- REST: completed requests
- REST: prepared statements
- REST: cache configuration
- SYSTEM Namespaces and N1QL Query Monitoring
- Using N1QL Monitoring for Problem Resolution
- Prepared Statements With Highest Execution Time
- Prepared Statements With Highest Prepare Counts
- Non-Prepared Statements With Highest Execution Times/Counts
- Plans Using Sub-Optimal Indexes
- Cancelling unruly requests
- Profiling
12. View Essentials
- What is a View?
- MapReduce
- Design Documents
- Working with Views in the Couchbase web console
- Create Development View
- Writing Map Functions
- The emit Function
- Writing Reduce Functions
- Built-in Reduce Functions
- View group and group_level
- Emitting Multiple Rows from the Map Function
- Emitting Array Keys
- View Use Cases
- View vs. N1QL