List of commits:
Subject Hash Author Date (UTC)
Fixing indent in xml and notes. ace8f38f8e0374005d143ebaa32d47a209fb5a48 aubert@math.cnrs.fr 2020-04-27 18:42:28
NoSQL application detailled. f2030de09eb58462e04935ec83c71d3c1fc72469 aubert@math.cnrs.fr 2020-04-27 18:28:02
Added automatic anchors. 2ddb93394121bcf95f91bfed8b447966925afa6f aubert@math.cnrs.fr 2020-04-27 05:35:14
added missing file 480b503949518eb51fd324a6f6bbb8f6d5643f0d aubert@math.cnrs.fr 2020-04-24 02:11:09
Worked on MongoDB section. 70f041d53a14bbb5ace0a4ef40f3e67eca285309 aubert@math.cnrs.fr 2020-04-22 19:18:55
Edited KNOWN_BUGS. b90ca71b498016b17963373ead24873781181bfd aubert@math.cnrs.fr 2020-04-22 05:12:14
Minor edits on narrative. d927955c1269ff1b110057577e50705fd41f4e2d aubert@math.cnrs.fr 2020-04-22 05:07:48
Worked on migrating code to snippets. 1ce6f6ba150a1cace57445330801e8b17f6c3044 aubert@math.cnrs.fr 2020-04-22 04:15:37
Edited Sol of 4.28, Pb and Sol of 4.29, checked Pb 4.30, edited Pb 4.31, edited the DB Applications Resources section, checked Pb 5.1, edited Pb 5.2 and Sol 5.2, Pb and Sol of 6.1, Pb 7.1, checked Pb 7.2, edited Sol 7.2, Pb and Sol of Pb 7.3, checked Ex 7.1 and edited its solution, checked Ex 7.2 and edited its solution, edited Ex and Sol of 7.3, Ex and Sol of 7.4 edited Ex 7.5 and checked its solution, edited Ex and Sol of 6.1, Ex and Sol of 6.2, checked Ex 6.3 and edited its solution, checked Ex 5.1 and edited its solution, checked Ex 5.2 and edited its solution, edited Ex and Sol of 5.3, checked Ex and Sol of 5.4, checked Ex 5.5 and edited its solution, and edited Ex and Sol of 5.6. 6580a85df655eddd149bb5531a0615ddfe9f810e Crystal 2020-04-22 03:02:20
Disabled Scrolling of sql files in html and enabled resize option 87d4ef4185fe48a7503724eb98a6c486c351ddee pveeral@augusta.edu 2020-04-21 15:49:36
Updated list of bugs. 17827a6a5b127fa6449b495c1e07359da4682100 aubert@math.cnrs.fr 2020-04-20 19:24:01
Worked on nosql chapter. 38dfcfffce7c06d0eab7256a7a5be1e2481a8505 aubert@math.cnrs.fr 2020-04-20 17:52:55
ALT in img folder 6e6469575d825f6c7360b88d6b387aee709b643c pveeral@augusta.edu 2020-04-20 15:26:47
Cleaned up bib file. 505b1000bca31e4d833bf7739d02d2b7e727e69b aubert@math.cnrs.fr 2020-04-20 05:03:18
rapid adjustments in contrib beb43332953ec4e2a8e4376a90ce58b1234eadba aubert@math.cnrs.fr 2020-04-20 00:10:44
Updated CONTRIB.md c29d920e1efbc84766a3caafc0db2fcab4220b32 pveeral@augusta.edu 2020-04-19 19:28:45
testing 4ece7ba3d5c5d99361ef5eac92bb0848f2ea5318 pveeral@augusta.edu 2020-04-19 18:27:50
Small edit, correcting maefile. 7baa188be7d322e5288b498afbb7beaa96a9770b aubert@math.cnrs.fr 2020-04-19 07:36:08
Cleaned latex files. 79b68f7b709ddeebc8133f7962fe5aabb3376304 aubert@math.cnrs.fr 2020-04-19 06:22:30
Minor corrections in installation manual. 436cee8616c25ccbed8bc406d988c2b4d28420f8 aubert@math.cnrs.fr 2020-04-19 06:19:04
Commit ace8f38f8e0374005d143ebaa32d47a209fb5a48 - Fixing indent in xml and notes.
Author: aubert@math.cnrs.fr
Author date (UTC): 2020-04-27 18:42
Committer name: aubert@math.cnrs.fr
Committer date (UTC): 2020-04-27 18:42
Parent(s): f2030de09eb58462e04935ec83c71d3c1fc72469
Signer:
Signing key:
Signing status: N
Tree: c689d1b6d1683727b6f40f10ce1457463eb939e4
File Lines added Lines deleted
notes/code/java/QuickTour.java 8 8
notes/code/xml/NSFAward.xml 34 34
notes/lectures_notes.md 18 14
File notes/code/java/QuickTour.java changed (mode: 100644) (index 9695c1b..2dab14b)
15 15 */ */
16 16
17 17 /* /*
18 *
19 *
20 *
18 * This file was edited to match our guidelines
19 * and add snippets.
20 * It can be executed from this folder using
21 21 * java -cp .:../../lib/mongo-java-driver-3.9.1.jar QuickTour.java * java -cp .:../../lib/mongo-java-driver-3.9.1.jar QuickTour.java
22 22 */ */
23 23 package tour; package tour;
 
... ... public class QuickTour {
61 61 */ */
62 62 public static void main(final String[] args) { public static void main(final String[] args) {
63 63
64 // start snippetmongoclient
64 // start snippet mongoclient
65 65 MongoClient mongoClient; MongoClient mongoClient;
66 66
67 67 if (args.length == 0) { if (args.length == 0) {
 
... ... public class QuickTour {
72 72 } }
73 73 // end snippet mongoclient // end snippet mongoclient
74 74
75 // start snippetdb-and-collection
75 // start snippet db-and-collection
76 76 // get handle to "mydb" database // get handle to "mydb" database
77 77 MongoDatabase database = mongoClient.getDatabase("mydb"); MongoDatabase database = mongoClient.getDatabase("mydb");
78 78
 
... ... public class QuickTour {
83 83 // drop all the data in it // drop all the data in it
84 84 collection.drop(); collection.drop();
85 85
86 // start snippetdocument-creation
86 // start snippet document-creation
87 87 // make a document and insert it // make a document and insert it
88 88 Document doc = Document doc =
89 89 new Document("name", "MongoDB") new Document("name", "MongoDB")
 
... ... public class QuickTour {
98 98 Document myDoc = collection.find().first(); Document myDoc = collection.find().first();
99 99 System.out.println(myDoc.toJson()); System.out.println(myDoc.toJson());
100 100
101 // start snippetdocuments-creation
101 // start snippet documents-creation
102 102 // now, lets add lots of little documents to the collection so we can explore queries and // now, lets add lots of little documents to the collection so we can explore queries and
103 103 // cursors // cursors
104 104 List<Document> documents = new ArrayList<Document>(); List<Document> documents = new ArrayList<Document>();
 
... ... public class QuickTour {
106 106 documents.add(new Document("i", i)); documents.add(new Document("i", i));
107 107 } }
108 108 collection.insertMany(documents); collection.insertMany(documents);
109 // end snippetdocuments-creation
109 // end snippet documents-creation
110 110 System.out.println( System.out.println(
111 111 "total # of documents after inserting 100 small ones (should be 101) " "total # of documents after inserting 100 small ones (should be 101) "
112 112 + collection.countDocuments()); + collection.countDocuments());
File notes/code/xml/NSFAward.xml changed (mode: 100644) (index 5398c77..61d7efe)
1 1 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
2 2 <!-- code/xml/NSFAward.xml --> <!-- code/xml/NSFAward.xml -->
3 3 <rootTag> <rootTag>
4 <Award>
5 <AwardTitle>CAREER: Advances in Graph Learning and Inference</AwardTitle>
4 <Award>
5 <AwardTitle>CAREER: Advances in Graph Learning and Inference</AwardTitle>
6 6 <AwardEffectiveDate>11/01/2019</AwardEffectiveDate> <AwardEffectiveDate>11/01/2019</AwardEffectiveDate>
7 7 <AwardExpirationDate>01/31/2023</AwardExpirationDate> <AwardExpirationDate>01/31/2023</AwardExpirationDate>
8 8 <AwardAmount>105091</AwardAmount> <AwardAmount>105091</AwardAmount>
9 9 <Organization> <Organization>
10 <Code>05010000</Code>
11 <Directorate>
12 <Abbreviation>CSE</Abbreviation>
13 <LongName>Direct For Computer &amp; Info Scie &amp; Enginr</LongName>
14 </Directorate>
15 <Division>
16 <Abbreviation>CCF</Abbreviation>
17 <LongName>Division of Computing and Communication Foundations</LongName>
18 </Division>
19 </Organization>
10 <Code>05010000</Code>
11 <Directorate>
12 <Abbreviation>CSE</Abbreviation>
13 <LongName>Direct For Computer &amp; Info Scie &amp; Enginr</LongName>
14 </Directorate>
15 <Division>
16 <Abbreviation>CCF</Abbreviation>
17 <LongName>Division of Computing and Communication Foundations</LongName>
18 </Division>
19 </Organization>
20 20 <ProgramOfficer> <ProgramOfficer>
21 <SignBlockName>Phillip Regalia</SignBlockName>
21 <SignBlockName>Phillip Regalia</SignBlockName>
22 22 </ProgramOfficer> </ProgramOfficer>
23 23 <AwardID>2005804</AwardID> <AwardID>2005804</AwardID>
24 24 <Investigator> <Investigator>
25 <FirstName>Patrick</FirstName>
26 <LastName>Hopkins</LastName>
27 <EmailAddress>phopkins@virginia.edu</EmailAddress>
28 <StartDate>11/22/2019</StartDate>
29 <EndDate />
30 <RoleCode>Co-Principal Investigator</RoleCode>
25 <FirstName>Patrick</FirstName>
26 <LastName>Hopkins</LastName>
27 <EmailAddress>phopkins@virginia.edu</EmailAddress>
28 <StartDate>11/22/2019</StartDate>
29 <EndDate />
30 <RoleCode>Co-Principal Investigator</RoleCode>
31 31 </Investigator> </Investigator>
32 32 <Investigator> <Investigator>
33 <FirstName>Jon</FirstName>
34 <LastName>Ihlefeld</LastName>
35 <EmailAddress>jfi4n@virginia.edu</EmailAddress>
36 <StartDate>11/22/2019</StartDate>
37 <EndDate />
38 <RoleCode>Principal Investigator</RoleCode>
33 <FirstName>Jon</FirstName>
34 <LastName>Ihlefeld</LastName>
35 <EmailAddress>jfi4n@virginia.edu</EmailAddress>
36 <StartDate>11/22/2019</StartDate>
37 <EndDate />
38 <RoleCode>Principal Investigator</RoleCode>
39 39 </Investigator> </Investigator>
40 40 <Institution> <Institution>
41 <Name>University of Virginia Main Campus</Name>
42 <CityName>CHARLOTTESVILLE</CityName>
43 <ZipCode>229044195</ZipCode>
44 <PhoneNumber>4349244270</PhoneNumber>
45 <StreetAddress>P.O. BOX 400195</StreetAddress>
46 <CountryName>United States</CountryName>
47 <StateName>Virginia</StateName>
48 <StateCode>VA</StateCode>
41 <Name>University of Virginia Main Campus</Name>
42 <CityName>CHARLOTTESVILLE</CityName>
43 <ZipCode>229044195</ZipCode>
44 <PhoneNumber>4349244270</PhoneNumber>
45 <StreetAddress>P.O. BOX 400195</StreetAddress>
46 <CountryName>United States</CountryName>
47 <StateName>Virginia</StateName>
48 <StateCode>VA</StateCode>
49 49 </Institution> </Institution>
50 </Award>
50 </Award>
51 51 </rootTag> </rootTag>
File notes/lectures_notes.md changed (mode: 100644) (index 3c491dc..d83615e)
... ... You will need to :
8922 8922 - Download <https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.9.1/mongo-java-driver-3.9.1.jar> from <https://oss.sonatype.org/content/repositories/releases/org/mongodb/> or from <https://github.com/mongodb/mongo-java-driver>. - Download <https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.9.1/mongo-java-driver-3.9.1.jar> from <https://oss.sonatype.org/content/repositories/releases/org/mongodb/> or from <https://github.com/mongodb/mongo-java-driver>.
8923 8923 - Download <https://raw.githubusercontent.com/mongodb/mongo-java-driver/master/driver-sync/src/examples/tour/QuickTour.java>. - Download <https://raw.githubusercontent.com/mongodb/mongo-java-driver/master/driver-sync/src/examples/tour/QuickTour.java>.
8924 8924
8925 Place those two files, `mongo-java-driver-3.9.1.jar` and `QuickTour.java` in the same folder, and run
8925 Place those two files, `mongo-java-driver-3.9.1.jar`{.bash} and `QuickTour.java`{.bash} in the same folder, and run
8926 8926
8927 8927
8928 8928 ```{.bash} ```{.bash}
8929 8929 java -cp .:mongo-java-driver-3.9.1.jar QuickTour.java java -cp .:mongo-java-driver-3.9.1.jar QuickTour.java
8930 8930 ``` ```
8931 8931
8932 You should see a large number of lines printed, and around the top, the message `INFO: Opened connection [connectionId{localValue:2, serverValue:12}] to localhost:27017`{.bash}.
8932 You should see a large number of lines displayed at the screen, and around the top, the message `INFO: Opened connection [connectionId{localValue:2, serverValue:12}] to localhost:27017`{.bash}.
8933 8933
8934 8934
8935 8935 After various import statement, the program create a `MongoClient` object called `mongoClient`, and connects it to the local database server: After various import statement, the program create a `MongoClient` object called `mongoClient`, and connects it to the local database server:
8936 8936
8937 8937
8938 ```{.sqlmysql .numberLines include=code/java/QuickTour.java snippet=mongoclient}
8938 ```{.sqlmysql .numberLines dedent=4 include=code/java/QuickTour.java snippet=mongoclient}
8939 8939 ``` ```
8940 8940
8941 8941
8942 8942 To get a database and a collection, the program uses: To get a database and a collection, the program uses:
8943 8943
8944 ```{.sqlmysql .numberLines include=code/java/QuickTour.java snippet=db-and-collection}
8944 ```{.sqlmysql .numberLines dedent=6 include=code/java/QuickTour.java snippet=db-and-collection}
8945 8945 ``` ```
8946 8946
8947 Note that a collection is "just" an [ArrayList](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html) of documents.
8947 Note that a collection is simply an [ArrayList](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html) of documents.
8948 8948
8949 8949 Assume we want to create the following document: Assume we want to create the following document:
8950 8950
8951 8951 ```{.json} ```{.json}
8952 {
8953 "name" : "MongoDB",
8954 "type" : "database",
8955 "count" : 1,
8956 "versions": [ "v3.2", "v3.0", "v2.6" ],
8957 "info" : { "level" : "easy", "used" : "yes" }
8952 {
8953 "name": "MongoDB",
8954 "type": "database",
8955 "count": 1,
8956 "info": {
8957 "x": 203,
8958 "y": 102
8958 8959 } }
8960 }
8959 8961 ``` ```
8960 8962
8961 8963 (Remember: order does not matter!) (Remember: order does not matter!)
8962 8964
8963 8965 Then we can use the `Document` class to create it, and then insert the document created: Then we can use the `Document` class to create it, and then insert the document created:
8964 8966
8965 ```{.sqlmysql .numberLines include=code/java/QuickTour.java snippet=document-creation}
8967 ```{.sqlmysql .numberLines dedent=6 include=code/java/QuickTour.java snippet=document-creation}
8966 8968 ``` ```
8967 8969
8968 8970 Note that we can "chain" the `append`, using `doc.append("type", "database").append("count", 1);` etc. Note that we can "chain" the `append`, using `doc.append("type", "database").append("count", 1);` etc.
 
... ... The program goes on and is discussed in details at <https://mongodb.github.io/mo
8991 8993 You can see for instance that to construct lists of documents and insert them, one can use: You can see for instance that to construct lists of documents and insert them, one can use:
8992 8994
8993 8995
8994 ```{.sqlmysql .numberLines include=code/java/QuickTour.java snippet=documents-creation}
8996 ```{.sqlmysql .numberLines dedent=4 include=code/java/QuickTour.java snippet=documents-creation}
8995 8997 ``` ```
8996 8998
8997 8999 A discipline similar to what we saw on Java applications interacting with MySQL should apply: A discipline similar to what we saw on Java applications interacting with MySQL should apply:
 
... ... Solution +.#
9074 9076 ## Problems {-} ## Problems {-}
9075 9077
9076 9078 Problem (Explaining NoSQL) +.#explainNosql Problem (Explaining NoSQL) +.#explainNosql
9077 ~ "NoSQL" used to mean "Non `SQL`", but was retro-actively given the meaning "Not Only `SQL`." Below, write a short essay that explains:
9079 ~
9080 "NoSQL" used to mean "Non `SQL`", but was retro-actively given the meaning "Not Only `SQL`." Below, write a short essay that explains:
9081
9078 9082 #. What motivated the "Non `SQL`" approach. #. What motivated the "Non `SQL`" approach.
9079 9083 #. What is the meaning of "Not Only `SQL`." #. What is the meaning of "Not Only `SQL`."
9080 9084 #. The benefits and drawbacks of the relational approach. #. The benefits and drawbacks of the relational approach.
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/caubert/CSCI_3410

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/caubert/CSCI_3410

Clone this repository using git:
git clone git://git.rocketgit.com/user/caubert/CSCI_3410

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main