├── datastax-studio-config ├── eventlogs │ └── log-studio │ │ ├── LOCK │ │ ├── CURRENT │ │ ├── 000010.sst │ │ ├── 000012.sst │ │ ├── 000014.sst │ │ ├── 000015.log │ │ ├── MANIFEST-000013 │ │ ├── LOG │ │ └── LOG.old ├── clientid ├── marker_files │ ├── .13c69bd5-a215-4f1b-bb24-bb006f7740c6.example │ ├── .577dbd0b-dcf6-496b-8a62-48b3678e776e.example │ ├── .636f7be7-3b99-4cab-9f91-bfba555612d7.example │ ├── .733fab48-95dc-4eef-8ff0-c9952a86370a.example │ ├── .ad4fb369-8941-456f-8436-23862120810d.example │ ├── .d1e1386b-e6f4-4a9d-923a-64d8e54d1a3c.example │ ├── .d21c3230-8446-41ea-aea6-1e85a00411e0.example │ ├── .da0b7dc3-1dd1-4027-bbef-4bf22e1506a4.example │ └── .fd853828-fa2d-4637-bd19-69879ef281c9.example ├── connections │ └── admin │ │ ├── .418ed742-cd61-4df8-abd8-07bc56a62e8d.example │ │ └── 418ed742-cd61-4df8-abd8-07bc56a62e8d ├── snapshots │ └── studio │ │ ├── settings │ │ └── snr-253 │ │ ├── notebook_list │ │ └── snr-253 │ │ └── d21c3230-8446-41ea-aea6-1e85a00411e0 │ │ └── snr-253 └── history │ └── d21c3230-8446-41ea-aea6-1e85a00411e0 │ ├── 1_2021-03-31-08-36-27.gz │ ├── 2_2021-03-31-08-36-32.gz │ ├── 3_2021-03-31-08-36-34.gz │ ├── 4_2021-03-31-08-36-36.gz │ ├── 5_2021-03-31-08-36-40.gz │ ├── 6_2021-03-31-08-36-46.gz │ ├── 7_2021-03-31-08-36-48.gz │ ├── 8_2021-03-31-08-36-54.gz │ ├── 9_2021-03-31-08-36-58.gz │ ├── 10_2021-03-31-17-56-44.gz │ ├── 11_2021-03-31-18-01-57.gz │ ├── 12_2021-04-01-08-54-41.gz │ ├── 13_2021-04-01-08-55-09.gz │ ├── 14_2021-04-01-08-55-37.gz │ ├── 15_2021-04-01-09-00-40.gz │ ├── 1_2021-03-31-08-36-27.meta │ ├── 2_2021-03-31-08-36-32.meta │ ├── 3_2021-03-31-08-36-34.meta │ ├── 4_2021-03-31-08-36-36.meta │ ├── 5_2021-03-31-08-36-40.meta │ ├── 6_2021-03-31-08-36-46.meta │ ├── 7_2021-03-31-08-36-48.meta │ ├── 8_2021-03-31-08-36-54.meta │ ├── 9_2021-03-31-08-36-58.meta │ ├── 10_2021-03-31-17-56-44.meta │ ├── 12_2021-04-01-08-54-41.meta │ ├── 13_2021-04-01-08-55-09.meta │ ├── 14_2021-04-01-08-55-37.meta │ ├── 11_2021-03-31-18-01-57.meta │ └── 15_2021-04-01-09-00-40.meta ├── slides.pdf ├── images ├── 01.png ├── 02.png ├── 03.png ├── 05.png ├── token.png ├── connect.png ├── graphql1.png ├── graphql2.png ├── token_hl.png ├── cqlconsole1.png ├── playground.png ├── playground1.png ├── studio_home.png ├── studio_notebook_1.png ├── studio_notebook_2.png ├── swagger │ ├── swagger_3c.png │ ├── swagger_3d.png │ ├── swagger_3g.png │ ├── swagger_3eB.png │ └── swagger_3fB.png ├── intro-to-nosql-badge.png ├── intro-to-nosql-cover.png ├── studio_create_graph.png ├── studio_test_connection1.png ├── studio_test_connection2.png ├── studio_test_connection3.png ├── studio_test_connection4.png ├── tutorials │ ├── astra_signup.gif │ ├── astra-create-db.gif │ ├── generate_token.png │ └── astra-create-token.gif └── swagger_responses_annotated.png ├── slides-shelovedata.pptx.pdf ├── astra.json ├── docker-compose.yaml ├── graph_databases.md ├── graph-demo └── Introduction_to_NoSQL_2022-05-16_21_38_53.studio-nb.tar └── README.md /datastax-studio-config/eventlogs/log-studio/LOCK: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/clientid: -------------------------------------------------------------------------------- 1 | 3db34644-3d23-4b42-a0c9-4b0ff00433cb -------------------------------------------------------------------------------- /datastax-studio-config/eventlogs/log-studio/CURRENT: -------------------------------------------------------------------------------- 1 | MANIFEST-000013 2 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.13c69bd5-a215-4f1b-bb24-bb006f7740c6.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.577dbd0b-dcf6-496b-8a62-48b3678e776e.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.636f7be7-3b99-4cab-9f91-bfba555612d7.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.733fab48-95dc-4eef-8ff0-c9952a86370a.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.ad4fb369-8941-456f-8436-23862120810d.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.d1e1386b-e6f4-4a9d-923a-64d8e54d1a3c.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.d21c3230-8446-41ea-aea6-1e85a00411e0.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.da0b7dc3-1dd1-4027-bbef-4bf22e1506a4.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/marker_files/.fd853828-fa2d-4637-bd19-69879ef281c9.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /datastax-studio-config/connections/admin/.418ed742-cd61-4df8-abd8-07bc56a62e8d.example: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /slides.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/slides.pdf -------------------------------------------------------------------------------- /images/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/01.png -------------------------------------------------------------------------------- /images/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/02.png -------------------------------------------------------------------------------- /images/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/03.png -------------------------------------------------------------------------------- /images/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/05.png -------------------------------------------------------------------------------- /images/token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/token.png -------------------------------------------------------------------------------- /images/connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/connect.png -------------------------------------------------------------------------------- /images/graphql1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/graphql1.png -------------------------------------------------------------------------------- /images/graphql2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/graphql2.png -------------------------------------------------------------------------------- /images/token_hl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/token_hl.png -------------------------------------------------------------------------------- /images/cqlconsole1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/cqlconsole1.png -------------------------------------------------------------------------------- /images/playground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/playground.png -------------------------------------------------------------------------------- /images/playground1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/playground1.png -------------------------------------------------------------------------------- /images/studio_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/studio_home.png -------------------------------------------------------------------------------- /slides-shelovedata.pptx.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/slides-shelovedata.pptx.pdf -------------------------------------------------------------------------------- /images/studio_notebook_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/studio_notebook_1.png -------------------------------------------------------------------------------- /images/studio_notebook_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/studio_notebook_2.png -------------------------------------------------------------------------------- /images/swagger/swagger_3c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/swagger/swagger_3c.png -------------------------------------------------------------------------------- /images/swagger/swagger_3d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/swagger/swagger_3d.png -------------------------------------------------------------------------------- /images/swagger/swagger_3g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/swagger/swagger_3g.png -------------------------------------------------------------------------------- /images/intro-to-nosql-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/intro-to-nosql-badge.png -------------------------------------------------------------------------------- /images/intro-to-nosql-cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/intro-to-nosql-cover.png -------------------------------------------------------------------------------- /images/studio_create_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/studio_create_graph.png -------------------------------------------------------------------------------- /images/swagger/swagger_3eB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/swagger/swagger_3eB.png -------------------------------------------------------------------------------- /images/swagger/swagger_3fB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/swagger/swagger_3fB.png -------------------------------------------------------------------------------- /images/studio_test_connection1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/studio_test_connection1.png -------------------------------------------------------------------------------- /images/studio_test_connection2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/studio_test_connection2.png -------------------------------------------------------------------------------- /images/studio_test_connection3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/studio_test_connection3.png -------------------------------------------------------------------------------- /images/studio_test_connection4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/studio_test_connection4.png -------------------------------------------------------------------------------- /images/tutorials/astra_signup.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/tutorials/astra_signup.gif -------------------------------------------------------------------------------- /images/tutorials/astra-create-db.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/tutorials/astra-create-db.gif -------------------------------------------------------------------------------- /images/tutorials/generate_token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/tutorials/generate_token.png -------------------------------------------------------------------------------- /images/swagger_responses_annotated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/swagger_responses_annotated.png -------------------------------------------------------------------------------- /images/tutorials/astra-create-token.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/images/tutorials/astra-create-token.gif -------------------------------------------------------------------------------- /datastax-studio-config/eventlogs/log-studio/000010.sst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/eventlogs/log-studio/000010.sst -------------------------------------------------------------------------------- /datastax-studio-config/eventlogs/log-studio/000012.sst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/eventlogs/log-studio/000012.sst -------------------------------------------------------------------------------- /datastax-studio-config/eventlogs/log-studio/000014.sst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/eventlogs/log-studio/000014.sst -------------------------------------------------------------------------------- /datastax-studio-config/eventlogs/log-studio/000015.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/eventlogs/log-studio/000015.log -------------------------------------------------------------------------------- /datastax-studio-config/snapshots/studio/settings/snr-253: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/snapshots/studio/settings/snr-253 -------------------------------------------------------------------------------- /datastax-studio-config/eventlogs/log-studio/MANIFEST-000013: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/eventlogs/log-studio/MANIFEST-000013 -------------------------------------------------------------------------------- /datastax-studio-config/snapshots/studio/notebook_list/snr-253: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/snapshots/studio/notebook_list/snr-253 -------------------------------------------------------------------------------- /datastax-studio-config/snapshots/studio/d21c3230-8446-41ea-aea6-1e85a00411e0/snr-253: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/snapshots/studio/d21c3230-8446-41ea-aea6-1e85a00411e0/snr-253 -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/1_2021-03-31-08-36-27.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/1_2021-03-31-08-36-27.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/2_2021-03-31-08-36-32.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/2_2021-03-31-08-36-32.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/3_2021-03-31-08-36-34.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/3_2021-03-31-08-36-34.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/4_2021-03-31-08-36-36.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/4_2021-03-31-08-36-36.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/5_2021-03-31-08-36-40.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/5_2021-03-31-08-36-40.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/6_2021-03-31-08-36-46.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/6_2021-03-31-08-36-46.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/7_2021-03-31-08-36-48.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/7_2021-03-31-08-36-48.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/8_2021-03-31-08-36-54.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/8_2021-03-31-08-36-54.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/9_2021-03-31-08-36-58.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/9_2021-03-31-08-36-58.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/10_2021-03-31-17-56-44.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/10_2021-03-31-17-56-44.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/11_2021-03-31-18-01-57.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/11_2021-03-31-18-01-57.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/12_2021-04-01-08-54-41.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/12_2021-04-01-08-54-41.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/13_2021-04-01-08-55-09.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/13_2021-04-01-08-55-09.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/14_2021-04-01-08-55-37.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/14_2021-04-01-08-55-37.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/15_2021-04-01-09-00-40.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datastaxdevs/workshop-introduction-to-nosql/main/datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/15_2021-04-01-09-00-40.gz -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/1_2021-03-31-08-36-27.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179787,"2":0},"2":1,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/2_2021-03-31-08-36-32.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179792,"2":0},"2":2,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/3_2021-03-31-08-36-34.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179794,"2":0},"2":3,"5":[200]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/4_2021-03-31-08-36-36.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179796,"2":0},"2":4,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/5_2021-03-31-08-36-40.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179800,"2":0},"2":5,"5":[201]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/6_2021-03-31-08-36-46.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179806,"2":0},"2":6,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/7_2021-03-31-08-36-48.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179808,"2":0},"2":7,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/8_2021-03-31-08-36-54.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179814,"2":0},"2":8,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/9_2021-03-31-08-36-58.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617179818,"2":0},"2":9,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/10_2021-03-31-17-56-44.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617213404,"2":0},"2":10,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/12_2021-04-01-08-54-41.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617267281,"2":0},"2":12,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/13_2021-04-01-08-55-09.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617267309,"2":0},"2":13,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/14_2021-04-01-08-55-37.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617267337,"2":0},"2":14,"5":[106]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/11_2021-03-31-18-01-57.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617213717,"2":0},"2":11,"5":[199,104]} -------------------------------------------------------------------------------- /datastax-studio-config/history/d21c3230-8446-41ea-aea6-1e85a00411e0/15_2021-04-01-09-00-40.meta: -------------------------------------------------------------------------------- 1 | v1_history_metadata {"1":{"1":1617267640,"2":0},"2":15,"5":[199,104]} -------------------------------------------------------------------------------- /datastax-studio-config/eventlogs/log-studio/LOG: -------------------------------------------------------------------------------- 1 | 2021/04/01-08:50:37.375920 7fdc76afc700 Recovering log #11 2 | 2021/04/01-08:50:37.412912 7fdc76afc700 Level-0 table #14: started 3 | 2021/04/01-08:50:37.510904 7fdc76afc700 Level-0 table #14: 89303 bytes OK 4 | 2021/04/01-08:50:37.648421 7fdc76afc700 Delete type=0 #11 5 | 2021/04/01-08:50:37.667481 7fdc76afc700 Delete type=3 #9 6 | -------------------------------------------------------------------------------- /astra.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Introduction to NoSQL Workshop", 3 | "description": "An introduction to NoSQL Databases", 4 | "skillLevel": "Beginner", 5 | "language":[], 6 | "stack":[], 7 | "heroImage": "https://github.com/datastaxdevs/workshop-introduction-to-nosql/raw/main/images/intro-to-nosql-cover.png?raw=true", 8 | "githubUrl": "https://github.com/datastaxdevs/workshop-introduction-to-nosql", 9 | "youTubeUrl": [ "https://www.youtube.com/watch?v=rhzUrejsA4A"], 10 | "tags": [ 11 | { "name": "nosql" } 12 | ], 13 | "category": "workshop", 14 | "usecases": [] 15 | } 16 | -------------------------------------------------------------------------------- /datastax-studio-config/connections/admin/418ed742-cd61-4df8-abd8-07bc56a62e8d: -------------------------------------------------------------------------------- 1 | json_connection_configuration_v1 {"1":"418ed742-cd61-4df8-abd8-07bc56a62e8d","10":"default localhost","11":9042,"12":["dse"],"15":2,"17":{"10":"","11":""},"18":{"10":"","11":""},"19":{"1":{"1":[{"1":"STUDIO_TUTORIAL_GRAPH","2":{"2":{"1":[{"1":"god","2":"mercury"},{"1":"titan","2":"male"},{"1":"monster","2":"optin-monster"},{"1":"human","2":"user-circle"},{"1":"location","2":"home"},{"1":"demigod","2":"mars-stroke-v"}]}}}]}},"20":{}} -------------------------------------------------------------------------------- /datastax-studio-config/eventlogs/log-studio/LOG.old: -------------------------------------------------------------------------------- 1 | 2021/03/31-17:53:33.275286 7fcc6bdfd700 Recovering log #8 2 | 2021/03/31-17:53:33.280933 7fcc6bdfd700 Level-0 table #10: started 3 | 2021/03/31-17:53:33.304582 7fcc6bdfd700 Level-0 table #10: 183 bytes OK 4 | 2021/03/31-17:53:33.398391 7fcc6bdfd700 Delete type=3 #6 5 | 2021/03/31-17:53:33.403554 7fcc6bdfd700 Delete type=0 #8 6 | 2021/03/31-18:02:01.415198 7fcbe734b700 Compacting 1@1 + 1@2 files 7 | 2021/03/31-18:02:01.447149 7fcbe734b700 Generated table #12: 42 keys, 62159 bytes 8 | 2021/03/31-18:02:01.447709 7fcbe734b700 Compacted 1@1 + 1@2 files => 62159 bytes 9 | 2021/03/31-18:02:01.450744 7fcbe734b700 compacted to: files[ 1 0 1 0 0 0 0 ] 10 | 2021/03/31-18:02:01.460583 7fcbe734b700 Delete type=2 #7 11 | 2021/03/31-18:02:01.466301 7fcbe734b700 Delete type=2 #5 12 | -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | networks: 4 | graph: 5 | external: true 6 | 7 | services: 8 | # ---------------------------------------- 9 | # DataStax Enterprise 10 | # ---------------------------------------- 11 | dse: 12 | image: datastax/dse-server:6.8.10 13 | command: [ -g ] 14 | ports: 15 | - "9042:9042" 16 | - "8983:8983" 17 | - "8182:8182" 18 | - "8183:8183" 19 | environment: 20 | - DS_LICENSE=accept 21 | - DC=DC1 22 | - JVM_EXTRA_OPTS=-Xmx1g -Xms1g 23 | - NUM_TOKENS=32 24 | cap_add: 25 | - IPC_LOCK 26 | ulimits: 27 | memlock: -1 28 | networks: 29 | - graph 30 | # Specify the container name explicitly to avoid getting underscores (see note above) 31 | container_name: dse 32 | 33 | # ---------------------------------------- 34 | # DataStax Studio 35 | # ---------------------------------------- 36 | studio: 37 | image: datastax/dse-studio:6.8.9 38 | ports: 39 | - "9091:9091" 40 | depends_on: 41 | - dse 42 | environment: 43 | DS_LICENSE: accept 44 | # for windows users - start studio image without volumes (remove the below 2 lines) 45 | volumes: 46 | - "./datastax-studio-config:/var/lib/datastax-studio" 47 | networks: 48 | - graph -------------------------------------------------------------------------------- /graph_databases.md: -------------------------------------------------------------------------------- 1 | ## 🎓🔥 Graph Database practice 2 | 3 | This is an optional part that is normally left as an exercise for the reader, 4 | to offer a hands-on learning experience on Graph Databases using DataStax Graph 5 | and DataStax Studio. 6 | 7 | > Note: as opposed to the rest of today's pratice, this needs to be done on your own machine. 8 | 9 | **✅ 5a. Prerequisites** 10 | 11 | **Minimal Configuration**: You need to have a computer with this minimal configuration requirements 12 | - At least 2CPU 13 | - At least 6GB or RAM 14 | 15 | **Install Docker and Docker Compose** 16 | 17 | You need to install Docker and Docker-compose on your machine 18 | - [Install **Docker** for Windows/Mac/Linux](https://github.com/DataStax-Academy/kubernetes-workshop-online/blob/master/0-setup-your-cluster/README.MD#1-install-docker) 19 | - [Install **Docker-Compose** for Windows/Mac/Linux](https://github.com/DataStax-Academy/kubernetes-workshop-online/blob/master/0-setup-your-cluster/README.MD#2-install-docker-compose) 20 | 21 | **✅ 5b. Create a docker network named 'graph'** 22 | 23 | ```bash 24 | docker network create graph 25 | ``` 26 | 27 | 🖥️ *Expected output* 28 | ```bash 29 | $workshop_introduction_to_nosql> docker network create graph 30 | 31 | 64f8bcc2dda416d6dc80ef3c1ac97902b9d90007842808308e9d741d179d9344 32 | ``` 33 | 34 | **✅ 5c.Clone this repository (or download ZIP from the github UI)** 35 | 36 | ```bash 37 | git clone https://github.com/datastaxdevs/workshop-introduction-to-nosql.git 38 | 39 | cd workshop-introduction-to-nosql 40 | ``` 41 | 42 | **✅ 5d.Start the containers** 43 | 44 | :warning: *Linux users:* 45 | >Folder `datastax-studio-config` is mapped to docker container (see: `docker-compose.yaml` file) and dse studio runs as user `studio` with `uid=997` and >`gui=997` which needs RW access to that folder. 46 | > 47 | >Run this command if you are on a linux system: 48 | >```bash 49 | >sudo chown -R 997:997 ./datastax-studio-config 50 | >``` 51 | :warning: *Linux users:* 52 | 53 | :📝 Note for *Windows users:* 54 | >Start the *studio image* `without a volume`. Remove these 2 lines above `networks` in *studio* (see: `docker-compose.yaml` file) 55 | >```yaml 56 | >volumes: 57 | > - "./datastax-studio-config:/var/lib/datastax-studio" 58 | 59 | :📝 Note for *Windows users:* 60 | 61 | Start containers: 62 | ```bash 63 | docker-compose up -d 64 | ``` 65 | 66 | 🖥️ *Expected output* 67 | ```bash 68 | $workshop_introduction_to_nosql> docker-compose up -d 69 | 70 | Creating dse ... done 71 | Creating workshop-introduction-to-nosql_studio_1 ... done 72 | ``` 73 | Wait for the application to start (30s) and open [http://localhost:9091](http://localhost:9091) 74 | 75 | 76 |  77 | 78 | **✅ 5e.Check database connection** 79 | 80 | Open the ellipsis and click `Connections` 81 | 82 |  83 | 84 | Select the `default localhost` connection 85 | 86 |  87 | 88 | Check that `dse` is set for the host (pointing to a local cassandra) 89 | 90 |  91 | 92 | Click the button `Test` and expect the output `Connected Successfully` 93 | 94 |  95 | 96 | **✅ 5f. Open the notebook Work** 97 | 98 | Use the ellipsis to now select `Notebooks` 99 | 100 |  101 | 102 | Once the notebook opens it asks you to create the graph: click the `Create Graph` button (and leave all settings to default) 103 | 104 |  105 | 106 | Execute cell after cell spotting the `Real Time >` button in each cell (top right) 107 | 108 |  109 | 110 | Voila ! 111 | 112 |  113 | 114 | **✅ 5g. Close Notebook** 115 | 116 | To close open notebooks you can now use 117 | 118 | ```bash 119 | docker-compose down 120 | ``` 121 | 122 | 🖥️ *Expected output* 123 | ```bash 124 | $workshop_introduction_to_nosql> docker-compose down 125 | Stopping workshop-introduction-to-nosql_studio_1 ... done 126 | Stopping dse ... 127 | ``` 128 | 129 | Congratulations, you completed the Graph Database practice! 130 | 131 | Back to [main README](README.md#practice). -------------------------------------------------------------------------------- /graph-demo/Introduction_to_NoSQL_2022-05-16_21_38_53.studio-nb.tar: -------------------------------------------------------------------------------- 1 | notebook.bin 0100644 0000000 0000000 00000036745 14240542155 012140 0 ustar 00 0000000 0000000 json_notebook_v1 {"1":"f0249807-b3c6-49d0-bccd-9db9be356773","10":"418ed742-cd61-4df8-abd8-07bc56a62e8d","11":"Introduction to NoSQL","12":{"1":1652724221,"2":15000000},"13":{"1":1652737108,"2":350000000},"14":false,"15":[{"1":"189bdc57-f7e9-4981-9738-8a0c370db9f1","10":4,"11":"**1**. Drop all schema definitions and data. ","12":"markdown","13":{"1":"da930a76-af5a-4436-b646-5c07791bb669","10":{"9":"
1. Drop all schema definitions and data.
\n"},"11":4,"12":false},"16":true,"17":true,"18":{},"25":"LOCAL.ONE"},{"1":"63da20c0-b56b-4aaf-8b01-f198d61b5db2","10":4,"11":"schema.drop()","12":"gremlin","13":{"1":"50f76ccf-fa88-4259-a70c-6eb03818c4e5","10":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"OK"}],"3":1},"11":12,"12":false,"14":1717},"16":true,"17":false,"25":"LOCAL.ONE"},{"1":"c66370ec-9253-4679-a2ba-13e7d855adab","10":4,"11":"**2**. Define the graph schema. Use the *DataStax Studio* schema view to explore the schema visually.","12":"markdown","13":{"1":"e3812d33-2940-4f78-a97c-1ecf38ddf664","10":{"9":"2. Define the graph schema. Use the DataStax Studio schema view to explore the schema visually.
\n"},"11":4,"12":false},"16":true,"17":true,"18":{},"25":"LOCAL.ONE"},{"1":"b569644b-c31d-4981-987d-17d05f6644d9","10":4,"11":"// Define vertex labels\nschema.vertexLabel(\"user\").ifNotExists().\n partitionBy(\"id\",UUID).\n property(\"name\",Text).\n property(\"email\",Text).\n create()\nschema.vertexLabel(\"account\").ifNotExists().\n partitionBy(\"id\",UUID).\n property(\"type\",Text).\n property(\"balance\",Decimal).\n create()\n\n// Define edge labels\nschema.edgeLabel(\"has\").ifNotExists().\n from(\"user\").to(\"account\").\n create()\n\n// Define vertex indexes\nschema.vertexLabel('user').materializedView('user_by_name').ifNotExists().partitionBy('name').clusterBy('id', Asc).create()\nschema.vertexLabel('user').materializedView('user_by_email').ifNotExists().partitionBy('email').clusterBy('id', Asc).create()\n\n// Define edge indexes\nschema.edgeLabel('has').from('user').to('account').materializedView('account_has_user').ifNotExists().inverse().create()","12":"gremlin","13":{"1":"cb476ad5-7d9e-4ada-92d5-3bbb6a590ef3","10":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"OK"}],"3":1},"11":12,"12":false,"14":505},"15":9,"16":true,"17":false,"25":"LOCAL.ONE"},{"1":"807056dc-ec7c-44dd-8154-c2c357e645f8","10":4,"11":"**3**. Add 5 vertices and 3 edges.","12":"markdown","13":{"1":"77c73fe1-c679-41b8-ade2-32456bd6290c","10":{"9":"3. Add 5 vertices and 3 edges.
\n"},"11":4,"12":false},"16":true,"17":true,"18":{},"25":"LOCAL.ONE"},{"1":"22bcda8d-5191-47d9-b6b8-3533e58d1949","10":4,"11":"g.addV(\"user\")\n .property(\"id\",UUID.fromString(\"1cafb6a4-396c-4da1-8180-83531b6a41e3\"))\n .property(\"name\",\"Alice\")\n .property(\"email\",\"alice@example.org\")\n .as(\"alice\")\n \n .addV(\"user\")\n .property(\"id\",UUID.fromString(\"0d2b2319-9c0b-4ecb-8953-98687f6a99ce\"))\n .property(\"name\",\"Bob\")\n .property(\"email\",\"bob@example.org\")\n .as(\"bob\")\n \n .addV(\"account\")\n .property(\"id\",UUID.fromString(\"83428a85-5c8f-4398-8019-918d6e1d3a93\"))\n .property(\"type\",\"Checking\")\n .property(\"balance\",2500.00)\n .as(\"alice_account_1\")\n \n .addV(\"account\")\n .property(\"id\",UUID.fromString(\"811b56c3-cead-40d9-9a3d-e230dcd64f2f\"))\n .property(\"type\",\"Savings\")\n .property(\"balance\",1500.00)\n .as(\"alice_account_2\")\n \n .addV(\"account\")\n .property(\"id\",UUID.fromString(\"81def5e2-84f4-4885-a920-1c14d2be3c20\"))\n .property(\"type\",\"Checking\")\n .property(\"balance\",1000.00)\n .as(\"bob_account_1\")\n \n .addE(\"has\")\n .from(\"alice\")\n .to(\"alice_account_1\")\n \n .addE(\"has\")\n .from(\"alice\")\n .to(\"alice_account_2\")\n \n .addE(\"has\")\n .from(\"bob\")\n .to(\"bob_account_1\")\n \n .iterate()","12":"gremlin","13":{"1":"2f4051d5-aa30-4802-89be-be8e869edd85","10":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","3":0},"11":1,"12":false,"14":19},"16":true,"17":false,"25":"LOCAL.ONE"},{"1":"ac96d8d4-8685-4fec-a661-a5757103a0f5","10":4,"11":"**4**. Execute traversals ...","12":"markdown","13":{"1":"12d74fe6-e005-456f-bd63-5bb8379546fa","10":{"9":"4. Execute traversals …
\n"},"11":4,"12":false},"16":true,"17":true,"18":{},"25":"LOCAL.ONE"},{"1":"9a34ba5c-4755-4195-9cb2-4db74748b910","10":4,"11":"g.with(\"label-warning\",false).V()\n//g.with(\"label-warning\",false).E()\n//g.V().has(\"user\",\"id\",UUID.fromString(\"1cafb6a4-396c-4da1-8180-83531b6a41e3\"))\n//g.V(\"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3\")\n//g.V().has(\"user\",\"name\",\"Alice\")\n//g.V().has(\"user\",\"name\",\"Alice\").out(\"has\")\n//g.V().has(\"user\",\"name\",\"Alice\").out(\"has\").values(\"balance\")\n//g.V().has(\"user\",\"name\",\"Alice\").out(\"has\").values(\"balance\").sum()\n//g.V().has(\"user\",\"name\",\"Alice\").out(\"has\").where(values(\"balance\").is(gt(2000)))\n//V().has(\"user\",\"name\",\"Alice\").out(\"has\").groupCount().by(\"type\")","12":"gremlin","13":{"1":"a21176b4-5d1c-45c9-9ac7-e32a28ab43f1","10":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"127":"com.datastax.studio.notebook.serialization.model.V1NotebookModel$Graph$Vertex","1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20","10":"account"},{"127":"com.datastax.studio.notebook.serialization.model.V1NotebookModel$Graph$Vertex","1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f","10":"account"},{"127":"com.datastax.studio.notebook.serialization.model.V1NotebookModel$Graph$Vertex","1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93","10":"account"},{"127":"com.datastax.studio.notebook.serialization.model.V1NotebookModel$Graph$Vertex","1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce","10":"user"},{"127":"com.datastax.studio.notebook.serialization.model.V1NotebookModel$Graph$Vertex","1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3","10":"user"}],"3":5},"11":13,"12":false,"13":{"100":{"1":[{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20","2":{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20","10":"account","100":[{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20#balance","10":"balance","100":"balance","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"12":"1000.00"}],"3":1}},{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"81def5e2-84f4-4885-a920-1c14d2be3c20\""}],"3":1}},{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20#type","10":"type","100":"type","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Checking"}],"3":1}}]}},{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce","2":{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce","10":"user","100":[{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce#name","10":"name","100":"name","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Bob"}],"3":1}},{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"0d2b2319-9c0b-4ecb-8953-98687f6a99ce\""}],"3":1}},{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce#email","10":"email","100":"email","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"bob@example.org"}],"3":1}}]}},{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3","2":{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3","10":"user","100":[{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#name","10":"name","100":"name","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Alice"}],"3":1}},{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"1cafb6a4-396c-4da1-8180-83531b6a41e3\""}],"3":1}},{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#email","10":"email","100":"email","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"alice@example.org"}],"3":1}}]}},{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f","2":{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f","10":"account","100":[{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f#balance","10":"balance","100":"balance","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"12":"1500.00"}],"3":1}},{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"811b56c3-cead-40d9-9a3d-e230dcd64f2f\""}],"3":1}},{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f#type","10":"type","100":"type","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Savings"}],"3":1}}]}},{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93","2":{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93","10":"account","100":[{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93#balance","10":"balance","100":"balance","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"12":"2500.00"}],"3":1}},{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"83428a85-5c8f-4398-8019-918d6e1d3a93\""}],"3":1}},{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93#type","10":"type","100":"type","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Checking"}],"3":1}}]}}]},"101":{"1":[{"1":"dseg:/user-has-account/1cafb6a4-396c-4da1-8180-83531b6a41e3/83428a85-5c8f-4398-8019-918d6e1d3a93","2":{"1":"dseg:/user-has-account/1cafb6a4-396c-4da1-8180-83531b6a41e3/83428a85-5c8f-4398-8019-918d6e1d3a93","10":"has","101":{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93","10":"account","100":[{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93#balance","10":"balance","100":"balance","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"12":"2500.00"}],"3":1}},{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"83428a85-5c8f-4398-8019-918d6e1d3a93\""}],"3":1}},{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93#type","10":"type","100":"type","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Checking"}],"3":1}}]},"102":{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3","10":"user","100":[{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#name","10":"name","100":"name","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Alice"}],"3":1}},{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"1cafb6a4-396c-4da1-8180-83531b6a41e3\""}],"3":1}},{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#email","10":"email","100":"email","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"alice@example.org"}],"3":1}}]},"103":{}}},{"1":"dseg:/user-has-account/0d2b2319-9c0b-4ecb-8953-98687f6a99ce/81def5e2-84f4-4885-a920-1c14d2be3c20","2":{"1":"dseg:/user-has-account/0d2b2319-9c0b-4ecb-8953-98687f6a99ce/81def5e2-84f4-4885-a920-1c14d2be3c20","10":"has","101":{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20","10":"account","100":[{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20#balance","10":"balance","100":"balance","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"12":"1000.00"}],"3":1}},{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"81def5e2-84f4-4885-a920-1c14d2be3c20\""}],"3":1}},{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20#type","10":"type","100":"type","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Checking"}],"3":1}}]},"102":{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce","10":"user","100":[{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce#name","10":"name","100":"name","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Bob"}],"3":1}},{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"0d2b2319-9c0b-4ecb-8953-98687f6a99ce\""}],"3":1}},{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce#email","10":"email","100":"email","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"bob@example.org"}],"3":1}}]},"103":{}}},{"1":"dseg:/user-has-account/1cafb6a4-396c-4da1-8180-83531b6a41e3/811b56c3-cead-40d9-9a3d-e230dcd64f2f","2":{"1":"dseg:/user-has-account/1cafb6a4-396c-4da1-8180-83531b6a41e3/811b56c3-cead-40d9-9a3d-e230dcd64f2f","10":"has","101":{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f","10":"account","100":[{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f#balance","10":"balance","100":"balance","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"12":"1500.00"}],"3":1}},{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"811b56c3-cead-40d9-9a3d-e230dcd64f2f\""}],"3":1}},{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f#type","10":"type","100":"type","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Savings"}],"3":1}}]},"102":{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3","10":"user","100":[{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#name","10":"name","100":"name","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"Alice"}],"3":1}},{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#id","10":"id","100":"id","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"\"1cafb6a4-396c-4da1-8180-83531b6a41e3\""}],"3":1}},{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3#email","10":"email","100":"email","101":{"127":"com.datastax.studio.notebook.serialization.model.ListWithNulls","1":[{"9":"alice@example.org"}],"3":1}}]},"103":{}}}]}},"14":10},"15":7,"16":true,"17":false,"18":{},"19":{"11":{"1":[{"1":"user","2":"{{{name}}}"}]},"12":{"1":[{"1":"dseg:/account/81def5e2-84f4-4885-a920-1c14d2be3c20","2":{"10":-16,"11":-130}},{"1":"dseg:/user/0d2b2319-9c0b-4ecb-8953-98687f6a99ce","2":{"10":-155,"11":-11}},{"1":"dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3","2":{"10":50,"11":-22}},{"1":"dseg:/account/811b56c3-cead-40d9-9a3d-e230dcd64f2f","2":{"10":114,"11":110}},{"1":"dseg:/account/83428a85-5c8f-4398-8019-918d6e1d3a93","2":{"10":-85,"11":35}}]},"13":"a21176b4-5d1c-45c9-9ac7-e32a28ab43f1","14":{"10":22,"11":-2},"16":{"11":{"10":"studio::none"}}},"22":423,"25":"LOCAL.ONE"}],"16":{"1":{}},"17":"users_and_accounts","19":false} code.txt 0100644 0000000 0000000 00000006227 14240542155 011271 0 ustar 00 0000000 0000000 --------------------NOTEBOOK_Introduction to NoSQL-------------------- 2 | --------------------CELL_MARKDOWN_1-------------------- 3 | **1**. Drop all schema definitions and data. 4 | --------------------CELL_GREMLIN_2-------------------- 5 | schema.drop() 6 | --------------------CELL_MARKDOWN_3-------------------- 7 | **2**. Define the graph schema. Use the *DataStax Studio* schema view to explore the schema visually. 8 | --------------------CELL_GREMLIN_4-------------------- 9 | // Define vertex labels 10 | schema.vertexLabel("user").ifNotExists(). 11 | partitionBy("id",UUID). 12 | property("name",Text). 13 | property("email",Text). 14 | create() 15 | schema.vertexLabel("account").ifNotExists(). 16 | partitionBy("id",UUID). 17 | property("type",Text). 18 | property("balance",Decimal). 19 | create() 20 | 21 | // Define edge labels 22 | schema.edgeLabel("has").ifNotExists(). 23 | from("user").to("account"). 24 | create() 25 | 26 | // Define vertex indexes 27 | schema.vertexLabel('user').materializedView('user_by_name').ifNotExists().partitionBy('name').clusterBy('id', Asc).create() 28 | schema.vertexLabel('user').materializedView('user_by_email').ifNotExists().partitionBy('email').clusterBy('id', Asc).create() 29 | 30 | // Define edge indexes 31 | schema.edgeLabel('has').from('user').to('account').materializedView('account_has_user').ifNotExists().inverse().create() 32 | --------------------CELL_MARKDOWN_5-------------------- 33 | **3**. Add 5 vertices and 3 edges. 34 | --------------------CELL_GREMLIN_6-------------------- 35 | g.addV("user") 36 | .property("id",UUID.fromString("1cafb6a4-396c-4da1-8180-83531b6a41e3")) 37 | .property("name","Alice") 38 | .property("email","alice@example.org") 39 | .as("alice") 40 | 41 | .addV("user") 42 | .property("id",UUID.fromString("0d2b2319-9c0b-4ecb-8953-98687f6a99ce")) 43 | .property("name","Bob") 44 | .property("email","bob@example.org") 45 | .as("bob") 46 | 47 | .addV("account") 48 | .property("id",UUID.fromString("83428a85-5c8f-4398-8019-918d6e1d3a93")) 49 | .property("type","Checking") 50 | .property("balance",2500.00) 51 | .as("alice_account_1") 52 | 53 | .addV("account") 54 | .property("id",UUID.fromString("811b56c3-cead-40d9-9a3d-e230dcd64f2f")) 55 | .property("type","Savings") 56 | .property("balance",1500.00) 57 | .as("alice_account_2") 58 | 59 | .addV("account") 60 | .property("id",UUID.fromString("81def5e2-84f4-4885-a920-1c14d2be3c20")) 61 | .property("type","Checking") 62 | .property("balance",1000.00) 63 | .as("bob_account_1") 64 | 65 | .addE("has") 66 | .from("alice") 67 | .to("alice_account_1") 68 | 69 | .addE("has") 70 | .from("alice") 71 | .to("alice_account_2") 72 | 73 | .addE("has") 74 | .from("bob") 75 | .to("bob_account_1") 76 | 77 | .iterate() 78 | --------------------CELL_MARKDOWN_7-------------------- 79 | **4**. Execute traversals ... 80 | --------------------CELL_GREMLIN_8-------------------- 81 | g.with("label-warning",false).V() 82 | //g.with("label-warning",false).E() 83 | //g.V().has("user","id",UUID.fromString("1cafb6a4-396c-4da1-8180-83531b6a41e3")) 84 | //g.V("dseg:/user/1cafb6a4-396c-4da1-8180-83531b6a41e3") 85 | //g.V().has("user","name","Alice") 86 | //g.V().has("user","name","Alice").out("has") 87 | //g.V().has("user","name","Alice").out("has").values("balance") 88 | //g.V().has("user","name","Alice").out("has").values("balance").sum() 89 | //g.V().has("user","name","Alice").out("has").where(values("balance").is(gt(2000))) 90 | //V().has("user","name","Alice").out("has").groupCount().by("type") 91 | versions-info.txt 0100644 0000000 0000000 00000000036 14240542155 013150 0 ustar 00 0000000 0000000 Studio Version: 6.8.0-b02f3ef 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 🎓🔥 Introduction to NoSQL Databases 2 | 3 | [](http://www.apache.org/licenses/LICENSE-2.0) 4 | [](https://discord.com/widget?id=685554030159593522&theme=dark) 5 | 6 |  7 | 8 | These instructions will lead you step by step for the workshop on introducing the NoSQL Databases technologies. 9 | 10 | ## Materials for the Session 11 | 12 | It doesn't matter if you join our workshop live or you prefer to do at your own pace, we have you covered. In this repository, you'll find everything you need for this workshop: 13 | 14 | - [Workshop video](#) 15 | - [Slide deck](./slides.pdf) 16 | - [Discord chat](https://bit.ly/cassandra-workshop) 17 | - [Questions and Answers](https://community.datastax.com/) 18 | 19 | ## Participation Badge / Homework 20 | 21 |
22 |
23 | To get the verified badge, you have to complete the following steps:
24 |
25 | 1. Complete the practice steps of this workshop as explained below. Steps 1-4 (Astra account + tabular/document/key-value databases) are mandatory, step 5 (graph database) is optional. Take a screenshot of completion of the last step for sections 2, 3 and 4 (either a CQL command output or a response in the Swagger UI). _NOTE: When taking screenshots ensure NOT to copy your Astra DB secrets!_
26 | 2. Submit the practice [here](https://dtsx.io/nosql-ws-hw), answering a few "theory" questions and also attaching the screenshots.
27 |
28 |
29 | ## Practice
30 |
31 | 1. [Login or Register to AstraDB and create database](#1-login-or-register-to-astradb-and-create-database)
32 | 2. [Tabular Databases](#2-tabular-databases)
33 | 3. [Document Databases](#3-document-databases)
34 | 4. [Key-Value Databases](#4-keyvalue-databases)
35 | 5. [Graph Databases](#5-graph-databases)
36 |
37 | ## 1. Login or Register to AstraDB and create database
38 |
39 | **`ASTRADB`** is the simplest way to run Cassandra with zero operations at all - just push the button and get your cluster. No credit card required,
40 | a monthly free credit to use, covering about 20M reads/writes and 80GB storage (sufficient to run small production workloads), all for FREE.
41 |
42 | ### ✅ 1a. Register a free account on Astra
43 |
44 | Click the button below to login or register on DataStax Astra DB. You can use your `Github`, `Google` accounts or register with an `email`.
45 |
46 |
47 |
48 | **Use the following values when creating the database** (this makes your life easier further on):
49 |
50 | |Field| Value|
51 | |---|---|
52 | |**database name**| `workshops` |
53 | |**keyspace**| `nosql1` |
54 | |**Cloud Provider**| Stick to GCP and then pick an "unlocked" region to start immediately |
55 |
56 | More info on account creation [here](https://awesome-astra.github.io/docs/pages/astra/create-account/).
57 |
58 | You will see your new database as `pending` or `initializing` on the Dashboard.
59 | The status will then change to `Active` when the database is ready: this will only take 2-3 minutes.
60 | At that point you will also receive a confirmation email.
61 |
62 | ## 2. Tabular databases
63 |
64 | In a tabular database we will store ... tables! The Astra DB Service is built on Apache Cassandra™, which is tabular. Let's start with this.
65 |
66 | > **Tabular databases** organize data in rows and columns, but with a twist from the traditional RDBMS. Also known as wide-column stores or partitioned row stores, they provide the option to organize related rows in partitions that are stored together on the same replicas to allow fast queries. Unlike RDBMSs, the tabular format is not necessarily strict. For example, Apache Cassandra™ does not require all rows to contain values for all columns in the table. Like Key/Value and Document databases, Tabular databases use hashing to retrieve rows from the table. Examples include: Cassandra, HBase, and Google Bigtable.
67 |
68 | ### ✅ 2a. Describe your Keyspace
69 |
70 | At database creation you provided a keyspace, a logical grouping for tables.
71 | Let's visualize it.
72 | In Astra DB go to CQL Console to enter the following commands
73 |
74 | #### Select your db
75 |
76 | 
77 |
78 | #### Go to the Cql Console
79 | 
80 |
81 | #### Enter the describe command
82 |
83 | ... and press Enter:
84 |
85 | ```sql
86 | DESCRIBE KEYSPACES;
87 | ```
88 |
89 | 
90 |
91 | ### ✅ 2b. Create table
92 |
93 | #### Table creation
94 |
95 | Execute the following Cassandra Query Language commands
96 |
97 | ```sql
98 | USE nosql1;
99 |
100 | CREATE TABLE IF NOT EXISTS accounts_by_user (
101 | user_id UUID,
102 | account_id UUID,
103 | account_type TEXT,
104 | account_balance DECIMAL,
105 | user_name TEXT STATIC,
106 | user_email TEXT STATIC,
107 | PRIMARY KEY ( (user_id), account_id)
108 | ) WITH CLUSTERING ORDER BY (account_id ASC);
109 | ```
110 |
111 | #### Check
112 |
113 | Check keyspace contents and structure:
114 |
115 | ```sql
116 | DESCRIBE KEYSPACE nosql1;
117 | ```
118 |
119 | _👁️ Expected output_
120 |
121 | ```
122 | CREATE KEYSPACE nosql1 WITH replication = {'class': 'NetworkTopologyStrategy', 'eu-central-1': '3'} AND durable_writes = true;
123 |
124 | CREATE TABLE nosql1.accounts_by_user (
125 | user_id uuid,
126 | account_id uuid,
127 | account_balance decimal,
128 | account_type text,
129 | user_email text static,
130 | user_name text static,
131 | PRIMARY KEY (user_id, account_id)
132 | ) WITH CLUSTERING ORDER BY (account_id ASC)
133 | AND additional_write_policy = '99PERCENTILE'
134 | AND bloom_filter_fp_chance = 0.01
135 | AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
136 | AND comment = ''
137 | AND compaction = {'class': 'org.apache.cassandra.db.compaction.UnifiedCompactionStrategy'}
138 | AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
139 | AND crc_check_chance = 1.0
140 | AND default_time_to_live = 0
141 | AND gc_grace_seconds = 864000
142 | AND max_index_interval = 2048
143 | AND memtable_flush_period_in_ms = 0
144 | AND min_index_interval = 128
145 | AND read_repair = 'BLOCKING'
146 | AND speculative_retry = '99PERCENTILE';
147 | ```
148 |
149 | ### ✅ 2c. Working with DATA
150 |
151 | #### Insert some entries into the table
152 |
153 | ```sql
154 | INSERT INTO accounts_by_user(user_id, account_id, account_balance, account_type, user_email, user_name)
155 | VALUES(
156 | 1cafb6a4-396c-4da1-8180-83531b6a41e3,
157 | 811b56c3-cead-40d9-9a3d-e230dcd64f2f,
158 | 1500,
159 | 'Savings',
160 | 'alice@example.org',
161 | 'Alice'
162 | );
163 |
164 | INSERT INTO accounts_by_user(user_id, account_id, account_balance, account_type)
165 | VALUES(
166 | 1cafb6a4-396c-4da1-8180-83531b6a41e3,
167 | 83428a85-5c8f-4398-8019-918d6e1d3a93,
168 | 2500,
169 | 'Checking'
170 | );
171 |
172 | INSERT INTO accounts_by_user(user_id, account_id, account_balance, account_type, user_email, user_name)
173 | VALUES(
174 | 0d2b2319-9c0b-4ecb-8953-98687f6a99ce,
175 | 81def5e2-84f4-4885-a920-1c14d2be3c20,
176 | 1000,
177 | 'Checking',
178 | 'bob@example.org',
179 | 'Bob'
180 | );
181 | ```
182 |
183 | #### Read values
184 |
185 | ```sql
186 | SELECT * FROM accounts_by_user;
187 | ```
188 |
189 | > Such a full-table query is strongly discouraged in most distributed databases
190 | > as it involves contacting many nodes to assemble the whole result dataset:
191 | > here we are using it for learning purposes, not in production and on a table
192 | > with very few rows!
193 |
194 | _👁️ Expected output_
195 |
196 | ```
197 | user_id | account_id | user_email | user_name | account_balance | account_type
198 | --------------------------------------+--------------------------------------+-------------------+-----------+-----------------+--------------
199 | 0d2b2319-9c0b-4ecb-8953-98687f6a99ce | 81def5e2-84f4-4885-a920-1c14d2be3c20 | bob@example.org | Bob | 1000 | Checking
200 | 1cafb6a4-396c-4da1-8180-83531b6a41e3 | 811b56c3-cead-40d9-9a3d-e230dcd64f2f | alice@example.org | Alice | 1500 | Savings
201 | 1cafb6a4-396c-4da1-8180-83531b6a41e3 | 83428a85-5c8f-4398-8019-918d6e1d3a93 | alice@example.org | Alice | 2500 | Checking
202 |
203 | (3 rows)
204 | ```
205 |
206 | > Notice that all three rows are "filled with data", despite the second of the insertions above skipping the `user_email` and `user_name` columns:
207 | > this is because these are **static columns** (i.e. associated to the whole partition) and their value had been written already in the first insertion.
208 |
209 | #### Read by primary key
210 |
211 | ```sql
212 | SELECT user_email, account_type, account_balance
213 | FROM accounts_by_user
214 | WHERE user_id=0d2b2319-9c0b-4ecb-8953-98687f6a99ce
215 | AND account_id=81def5e2-84f4-4885-a920-1c14d2be3c20;
216 | ```
217 |
218 | _👁️ Expected output_
219 |
220 | ```
221 | user_email | account_type | account_balance
222 | -----------------+--------------+-----------------
223 | bob@example.org | Checking | 1000
224 |
225 | (1 rows)
226 | ```
227 |
228 | ### ✅ 2d. Working with PARTITIONS
229 |
230 | But data can be grouped, we stored together what should be retrieved together.
231 |
232 | #### Try a query not compatible with the data model
233 |
234 |