Slide 1

Slide 1 text

Using MySQL Document Store with Java Scott Stroz MySQL Developer Advocate

Slide 2

Slide 2 text

• MySQL Developer Advocate • Full-stack developer for longer than the term "full-stack developer" has existed. • The only constant in my stack has been MySQL • Die-hard NY Giants fan • Avid golfer • I have the best office mate Obligatory "I Love Me" Slide 3/13/24 Copyright © 2021, Oracle and/or its affiliates 2

Slide 3

Slide 3 text

• "NoSQL" vs relational databases • What is MySQL Document Store? • The anatomy MySQL Document Store data • How to access MySQL Document Store • Connecting to MySQL Document Store with Java • Using the CRUD API • Using raw SQL to query our documents What will we cover? 3/13/24 Copyright © 2021, Oracle and/or its affiliates 3 Photo by Alexander Grey on Unsplash

Slide 4

Slide 4 text

• Slower development time • As more related data is added, CRUD operations can get more complex Copyright © 2021, Oracle and/or its affiliates 4 NoSQL "NoSQL" vs Relational Data • Data can be structured and organized • Easier to run queries for reporting Relational Data • Faster development time • Easier to modify the 'schema' • Simple CRUD API • Data is unstructured • Difficult to run queries for reporting 3/13/24

Slide 5

Slide 5 text

• JSON document storage solution built on top of MySQL • Documents are stored in a MySQL Table • InnoDB storage engine • ACID compliant • Uses JSON datatype • Easy to use CRUD API What is MySQL Document Store? 3/13/24 Copyright © 2021, Oracle and/or its affiliates 5

Slide 6

Slide 6 text

• Schema • Schema - database • Collection • Table • Document • Row in table • Table Columns* • _id • varbinary(32) • doc • JSON • _json_schema • JSON * Others if you add indexes. Anatomy of MySQL Document Store Copyright © 2021, Oracle and/or its affiliates 6 Photo by Kira auf der Heide on Unsplash 2/15/2023

Slide 7

Slide 7 text

• X-Plugin • Installed by default since 8.0.1 • Uses the X Protocol through MySQL Connectors (SDKs) • Connectors available for How do we access MySQL Document Store? 3/13/24 Copyright © 2021, Oracle and/or its affiliates 7 • Node.js • C++ • Python • PHP • .Net • MySQL Shell • Java Photo by Museums Victoria on Unsplash

Slide 8

Slide 8 text

• Demo of using a REST API • Built using Micronaut with Java • Uses 2 different database connections (more on that later) • Most of the demo uses the X-Dev API • The schema looks like à About the Demo Application 3/13/24 Copyright © 2021, Oracle and/or its affiliates 8

Slide 9

Slide 9 text

3/13/24 Copyright © 2021, Oracle and/or its affiliates 9 NOT PRODUCTION READY!! This Photo by Unknown Author is licensed under CC BY-NC

Slide 10

Slide 10 text

Gradle Dependencies 3/13/24 Copyright © 2021, Oracle and/or its affiliates 10

Slide 11

Slide 11 text

ScoreService 3/13/24 Copyright © 2021, Oracle and/or its affiliates 11

Slide 12

Slide 12 text

ScoreService 3/13/24 Copyright © 2021, Oracle and/or its affiliates 12

Slide 13

Slide 13 text

ScoreService 3/13/24 Copyright © 2021, Oracle and/or its affiliates 13

Slide 14

Slide 14 text

find() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 14

Slide 15

Slide 15 text

find() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 15

Slide 16

Slide 16 text

find() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 16

Slide 17

Slide 17 text

cleanResults() 3/13/24 Copyright © 2021, Oracle and/or its affiliates 17

Slide 18

Slide 18 text

cleanResults() 3/13/24 Copyright © 2021, Oracle and/or its affiliates 18

Slide 19

Slide 19 text

limit() & offset() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 19

Slide 20

Slide 20 text

limit() & offset() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 20

Slide 21

Slide 21 text

fields() & sort() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 21

Slide 22

Slide 22 text

fields() & sort() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 22

Slide 23

Slide 23 text

find()with a condition CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 23

Slide 24

Slide 24 text

find()with a condition CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 24

Slide 25

Slide 25 text

bind() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 25

Slide 26

Slide 26 text

bind() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 26

Slide 27

Slide 27 text

bind() with LIKE CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 27

Slide 28

Slide 28 text

bind() with LIKE CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 28

Slide 29

Slide 29 text

groupBy() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 29

Slide 30

Slide 30 text

groupBy() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 30

Slide 31

Slide 31 text

Using Raw SQL – with X-Dev API & Micronaut Data 3/13/24 Copyright © 2021, Oracle and/or its affiliates 31

Slide 32

Slide 32 text

Using Raw SQL – with X-Dev API & Micronaut Data 3/13/24 Copyright © 2021, Oracle and/or its affiliates 32

Slide 33

Slide 33 text

Using Raw SQL – with X-Dev API & Micronaut Data 3/13/24 Copyright © 2021, Oracle and/or its affiliates 33

Slide 34

Slide 34 text

Using Raw SQL – with X-Dev API & Micronaut Data 3/13/24 Copyright © 2021, Oracle and/or its affiliates 34

Slide 35

Slide 35 text

Using Raw SQL – with X-Dev API & Micronaut Data 3/13/24 Copyright © 2021, Oracle and/or its affiliates 35

Slide 36

Slide 36 text

Using Raw SQL – with X-Dev API & Micronaut Data 3/13/24 Copyright © 2021, Oracle and/or its affiliates 36

Slide 37

Slide 37 text

add() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 37

Slide 38

Slide 38 text

add() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 38

Slide 39

Slide 39 text

modify() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 39

Slide 40

Slide 40 text

modify() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 40

Slide 41

Slide 41 text

remove() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 41

Slide 42

Slide 42 text

remove() CRUD API 3/13/24 Copyright © 2021, Oracle and/or its affiliates 42

Slide 43

Slide 43 text

• "NoSQL" vs Relational Databases • Overview of MySQL Document Store • Anatomy of MySQL Document Store • X-Plugin and X-Protocol for connectivity • Adding Java connector and configuring the connection • Using the CRUD API • Leveraging the power of raw SQL for ad-hoc queries Recap 3/13/24 Copyright © 2021, Oracle and/or its affiliates 43

Slide 44

Slide 44 text

GitHub Resources 3/13/24 Copyright © 2021, Oracle and/or its affiliates 44

Slide 45

Slide 45 text

Document Store Documentation Resources 3/13/24 Copyright © 2021, Oracle and/or its affiliates 45

Slide 46

Slide 46 text

Java Connector Documentation Resources 3/13/24 Copyright © 2021, Oracle and/or its affiliates 46

Slide 47

Slide 47 text

Contact Me 3/13/24 Copyright © 2021, Oracle and/or its affiliates 47 Email [email protected] LinkedIn https://www.linkedin.com/in/scott-stroz/ Twitter https://twitter.com/boyzoid

Slide 48

Slide 48 text

3/13/24 Copyright © 2021, Oracle and/or its affiliates 48 Would you like credit for a FREE MySQL Certification Exam or Training? See me after the session!

Slide 49

Slide 49 text

3/13/24 Copyright © 2021, Oracle and/or its affiliates 49 Q&A Thank You!