A RESTFUL API WITH MONGODB. A Project. California State University, Sacramento

Size: px
Start display at page:

Download "A RESTFUL API WITH MONGODB. A Project. California State University, Sacramento"

Transcription

1 A RESTFUL API WITH MONGODB A Project Presented to the faculty of the Department of Computer Science California State University, Sacramento Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in Computer Science by Satia Ahmed SPRING 2018

2 2018 Satia Ahmed ALL RIGHTS RESERVED ii

3 A RESTFUL API WITH MONGODB A Project by Satia Ahmed Approved by:, Committee Chair Dr. Ying Jin, Second Reader Dr. Jun Dai Date iii

4 Student: Satia Ahmed I certify that this student has met the requirements for format contained in the University format manual, and that this project is suitable for shelving in the Library and credit is to be awarded for the project., Graduate Coordinator Dr. Jinsong Ouyang Date Department of Computer Science iv

5 Abstract of A RESTFUL API WITH MONGODB by Satia Ahmed MongoDB is a document based NoSQL database system which stores data in the form of JSON documents. The de-normalized structure of MongoDB document makes query performance efficient and cost effective. In this project, a daycare application is implemented using MongoDB as the database. To emulate real life data, Big Data documents are generated programmatically using data generator tool from Redgate Software Ltd, called SQL Data Generator, Visual Studio SSIS tool, and python scripting. To connect with the database and perform CRUD (Create, Read, Update, Delete) operations on the data using RESTful API, multiple methods were surveyed in this project. These studies include dependencies and methods to wrap MongoDB with Java, C# and nodejs. Further, this project implemented RESTful API using nodejs, wrapping MongoDB as the backend database. The frontend was rendered with AngularJS which communicates with the backend and allows users to query and operate on the data stored in MongoDB. A MVC (Model View Controller) v

6 model was used to implement the REST API, where Model is our MongoDB database and AngularJS is our View., Committee Chair Dr. Ying Jin Date vi

7 TABLE OF CONTENT Page List of Tables... x List of Figures... xi Chapter 1. INTRODUCTION CORE CONCEPT OF MONGODB Database Data Model Always-On High Availability Feature Horizontal scaling Security and storage Download and installation process CREATING A BIG DATA DATABASE Designing the Document Structure Creating the Database Generating JSON Documents Populating the database Exporting and Importing Collection Changing Schema vii

8 4. COMMANDS AND QUERIES IN MONGODB CRUD Operations Create Read Update Delete Query Documents Query Embedded Documents Query Operator Projection of Array Elements Aggregate Operation Pipeline $lookup for Left Outer Join Queries used in the REST API IMPLEMENT REST API USING MONGODB Introduction to REST RESTful API With MongoDB as Backend MongoDB drivers Connecting with.net: C# framework Connecting with Java framework Connecting with Node.js: JavaScript framework viii

9 5.3 MEAN stack Functional Requirements for the REST API Setting up a MEAN project CONCLUSION References ix

10 LIST OF TABLES Tables Page 2.5 MongoDB Version Supported by Different OS MongoDB Drivers x

11 LIST OF FIGURES Figure Page 3.1.a Collection daycareinfo for daycare branch information b Collection for Employee information c 1:N Relationships between Program documents and Student documents d N:N Relationship between Program documents and Employee documents e Document Structure in Collection programinfo containing information about programs f Array of Documents in Collection programinfo containing information about all Students in that program g Embedded related documents in Array of Documents Collection programinfo h Embedded Documents in Array of Document Structure in Collection programinfo h Related Embedded Documents in Collection programinformation a Importing documents to populate collection b Export Operation to download documents from the collection a Create operation by single document insertion b Create Operation by multiple documents insertion c Document Inserted with JavaScript and mongodb Insert Operation d Populate Collection in database with import Operation a Read Operation Having One Filter And No Projection b Multiple Field-Value Pairs in Filter That Acts as AND Condition c Projection and Filer in Find Operation xi

12 4.1.2.d Excluding _id from the retrieved documents e Retrieve All Except the Boolean Zero Assigned Fields in Projection f Read Operation to Retrieve All Data g Read Operation to Retrieve the First Element a display the document needed to be updated b Update operation to change value of field c Display updated document a Delete operation b Drop operation to Delete Collection a Retrieve an Embedded Document with Dot Notation b Display a Field in Embedded Document Using Projection a $in Query operator b $or Query operator c $lt operator inside $or Query operator Pipeline Aggregation Operation a $Lookup for Left Outer Join b Results for $Lookup Operation MongoDB Drivers a Driver Installation via Nuget a Directory Structure of The Project b RESTful Page for CRUD Operation c Page displaying the Dashboard xii

13 1 1. INTRODUCTION For a long time, relational database system has served applications reliably, and offered features that remain critical to date. However modern web applications raise requirements that are not addressed by the traditional relational databases [1]. This has led to the evolution of NoSQL databases. NoSQL databases meet these new imposing requirements by offering innovative new features but have failed to deliver the crucial aspects that have been anticipated and counted upon from relational databases. MongoDB binds the innovations of NoSQL while sustaining the groundwork of relational databases, according to [2]. MongoDB is an immerging NoSQL document based Big data database. Among all the immerging new NOSQL databases MongoDB is currently one of the most popular ones [3]. The flexible schema of the document structure offered by MongoDB can represent a superset of other database models. MongoDB s multi-model design significantly reduces developer and operational complexity, as several distinct database systems can be addresses to meet application requirements [1]. The Storage engine supported by MongoDB provides encryption which ensures data security. MongoDB permits users to configure combination of multiple storage engines which helps to design a simple and steady approach to meet various application requirements for data. Conventionally, if multiple database systems are involved in one application, these are managed with complex, custom integration code so that data can be moved consistently and securely between the database systems. With MongoDB s flexible storage architecture, the database automatically manages the movement of data between storage engine technologies using

14 2 native replication according to [1]. MongoDB is still evolving and new features and tools are being added to it with every release [1] [2]. MongoDB supports high write load that can write real time data, horizontal scalability that deploys large data set with higher throughput, high availability that makes easy recovery from a node failure, flexible schema that supports changing data, geo-spatial features that supports location based Query [3] [4], which makes MongoDB a database for modern web applications and internet infrastructure [5]. Many web applications are built on REST architecture. A RESTful API follows a consistent design to follow REST architectural best practices to create web service. Based on REST technology which uses HTTP request to process data. Creating a RESTful API with NoSQL database addresses all the modern web application demand and requirements. In this project, we implemented a Big Data database using MongoDB, and how RESTful APIs can be built wrapping MongoDB with three popular frameworks such as Spring MVC, ASP.NET and nodejs. There are dependencies that needs to be addressed, to connect to these frameworks. Studying all these dependencies, we chose to implement a RESTful API in nodejs with MongoDB as the backend database.

15 3 2. CORE CONCEPT OF MONGODB MongoDB database management system is available as free open source and has an enterprise version, both of which are supported in Linux and Windows OS. MongoDB stores data in a binary representation called BSON (Binary JSON). 2.1 Database Data Model Database in MongoDB consists of collections of documents that hold similar kind of data. These documents are JSON objects comprising of key value pairs. Supported data types for these values are strings, numbers and dates. Fields can support all the data types supported by relational database, more over a field can have arrays of values, or a JSON document as its value or arrays of JSON documents as its values. MongoDB requires a primary key called ObjectID for every document. ObjectID identifies each document in the collection of MongoDB database. This primary key has field name _id and value as a 24-byte hexadecimal string, which are unique for every single document. Additional secondary indexes can also be created on fields which supports ascending, descending, unique, compound-key and geospatial indexes [6]. Value for primary key, _id can be created by the user while creating the document. But as it is the primary key and index, it must be unique. If a document is inserted in the collection without a _id field then MongoDB generates unique value for this field. If a document is inserted with duplicate value in _id field then a duplicate key error is generated.

16 4 2.2 Always-On High Availability Feature Replication process provides real time availability and disaster recovery solution for always on global deployments [1]. Replication process is done by a set of replica sets, which is a group of process that maintains same data set by distributing the datasets across multiple machines called nodes. This results in redundancy which makes recovery from primary failover due to server or network outage fast. Replica set consists of a topology where there is a primary node and one or more secondary nodes. Read operation is handled by both primary and secondary nodes, which is why read intensive web applications prefer MongoDB. The write operations are only handled by primary node. Whenever the primary node fails, a secondary node is selected by the cluster and promotes it to be primary, thus supporting the automatic failover. Whenever the failed primary node comes back online, it will continue running as a secondary node [7]. 2.3 Horizontal scaling Scalability is the capability of a system to handle a growing amount of work, or its potential to be enlarged to accommodate that growth, according to [8]. Scalability is accomplished by horizontal scaling and vertical scaling. Vertical scaling is accomplished by increasing the capacity of existing hardware or software by adding CPU and storage resources. Vertical scaling has the limitation to grow only as big as the server. On the other hand, horizontal scaling means distribute the data across multiple machines by adding more nodes/computers to the system. Horizontal scaling can connect to the hardware or software of these machines such that they can work like a single unit [4] [9].

17 5 MongoDB supports horizontal scaling by a process called sharding. Sharding distributes a large collection over multiple servers called clusters or shards where each of these shards are independent database but collectively these shards make up the complete database system. The sharding process in MongoDB is automated. Adding a new cluster to the database system gets auto-sharded by distributing the data evenly among all the clusters [10]. 2.4 Security and storage MongoDB provides authentication, access control, encryption, limits network exposure, Audits system activities etc. to secure the data in deployment. MongoDB provides a variety of storage engines to support applications with different requirements. The default storage engine is WireTiger. MongoDB enterprise version offers Inmemory Storage Engine for more productivity by storing the data in memory instead of storing them in disk [11] [12]. 2.5 Download and installation process MongoDB supports multiple operating systems. There are multiple versions of MongoDB available. Table 2.5.a lists all the versions of MongoDB that are supported by Mac OS, Ubuntu and Windows operating system [1].

18 6 Table 2.5 MongoDB Versions Supported by Different OS Operating System MongoDB Version Mac bit Ubuntu bit Windows bit / 64-bit Windows Vista For this project we installed latest release of MongoDB which is version 3.4 on Windows 10 OS by downloading the 64-bit windows version from https// [13]. Extracted and ran the downloaded file in our project location. By default, it is installed in C drive. After installing MongoDB, there will be a folder created with the name MongoDB. Create a folder named data in that directory. In the data folder create a folder named db. This is the default location for MongoDB data directory. Lastly, the path of these folders that were created is needed to be set up. For this we need to go to a folder named bin inside the folder MongoDB and set up the path within mongod.exe. Following are the commands ran to execute these steps.

19 7 C:\Users\sahmed\MongoDB>md data C:\Users\sahmed\MongoDB>cd data C:\Users\sahmed\MongoDB\data>md db C:\Users\sahmed\MongoDB\data>cd.. C:\Users\sahmed\MongoDB>cd bin C:\Users\sahmed\MongoDB\bin>mongod.exe --dbpath "C:\Users\sahmed\MongoDB\data" To check if MongoDB is installed successfully the following command can be run. C:\Users\sahmed\MongoDB\bin>mongo.exe MongoDB shell version v3.4.1 connecting to: MongoDB:// :27017 MongoDB server version: The result of this command displays the sell version, connection port and the server version of the installed MongoDB.

20 8 3. CREATING A BIG DATA DATABASE The MongoDB database we decided to create is a daycare system named DayCareDB. It has a big data element and relational property among its data. The day care has 20 branches. Each branch has about 5 to 10 programs or classes offered for kids. Each of these programs has a class capacity of 20 students and two instructors. Including the instructors involved with the programs, there are management, office Clerks and kitchen workers, making about 20 employees involved in each of the branch. The big data document is generated on daily basis reporting activities performed by each kid, with additional information requested by the parents. 3.1 Designing the Document Structure Based on the different data to be stored, four collections were created. In MongoDB, to establish relationships between logically related data, there are two approaches available: embedded and referenced approach. In this database for daycare system, mostly embedded approach was taken to store related information in the same document. To test how referenced approach works, two collections were created with referenced approach. In this project report to demonstrate the document structures, they are represented as a block enclosed in a box for visual clarity. For fields containing a document as its value, these documents are shown as a box overlapping the original box of the document for which the field value pair belongs.

21 9 Figure 3.1.a Collection daycareinfo for daycare branch information Depending on the kind of data that would be used together, four collections were created for the database. These are daycareinfo, programinfo, employeeinfo and kidreport. Figure 3.1.a illustrates the document structure for collection daycareinfo. This is a collection of documents that holds information about each branch of the daycare. Figure 3.1.b illustrates the document structure of the collection employeeinfo. The field value pairs for these documents stores all data related to employees. These documents store the ObjectID of related daycareinfo document, referring which employee works for which branch. This represents a N:N relationship between the documents. This representation of relationship in MongoDB is called referenced approach. With this approach 1:N, N:1 and N:N relationships also can be achieved.

22 10 Figure 3.1.b Collection for Employee information Figure 3.1.c and figure 3.1.d presents a visual representation of how 1:N, N:1 or N:N relationships can be established between documents. In this figure 1:N relationship is displayed between the documents about program Information and documents about Student Information. Each student has their own document containing individual student data. Each of these student document contains an ObjectID as a unique identifier of that document. In The program document, all the students who are enrolled in that program are captured by listing all the ObjectIDs of student documents as that array elements. When a document contains ObjectID of multiple other documents, it represents a one to many (1:N) relationship between that document.

23 11 The many to many relationship (N:N), as shown in Figure 3.1.d, captures how multiple Program documents reference to all the employee documents and how multiple employee documents reference to multiple program documents. Figure 3.1.c 1:N Relationships between Program documents and Student documents

24 Figure 3.1.d N:N Relationship between Program documents and Employee documents 12

25 13 Figure 3.1.e Document Structure in Collection programinfo containing information about programs The collection programinfo stores documents that holds information about all the programs offered by a branch of the database. In these documents all the employees involved, students enrolled and waitlist information are stored. Figure 3.1.e illustrates the document structure where the field value pairs holds data about the program information and instructor information.

26 14 Figure 3.1.f Array of Documents in Collection programinfo containing information about all Students in that program In programinfo, addition to program information and instructor information, information about all the students enrolled for that program are listed as arrays of documents as shown in Figure 3.1.f.

27 15 This figure, demonstrates document structure to embed documents within documents to store related information. Figure 3.1.g Embedded related documents in Array of Documents Collection programinfo Figure 3.1.g displays the document structure for parent information containing documents for father s name, mother s name and contact.

28 16 Figure 3.1.g Embedded Documents in Array of Document Structure in Collection programinfo Figure 3.1.g displays the document structure containing fields for photograph permission, roll number and sex of the student. It contains a document that holds information about pickup authorization. Figure 3.1.e, Figure 3.1.f and Figure 3.1.g are part of Student document containing all student information who are enrolled in that program. Documents of all the students are embedded in programinfo as array documents.

29 17 Figure 3.1.h Related Embedded Documents in Collection programinformation In Figure 3.1.h WaitList field contains arrays of documents that contains information about all the wait listed students for a program. Each of the documents in this array contains further embedded documents that capture all the details about parent information, contact information etc.

30 18 The collection called KidReport holds documents about kid activities which does not have a fixed schema. All the documents have few common fields such as Name, Program, Branch but additional fields can be added according to requirement. The concept of this document is to enable the day care staff to report or inform the parent about the learning activity, play activity, food consumed, nap time or any other information that the parent might have requested about their child. 3.2 Creating the Database To create the database, we need to locate the folder named MongoDB, in the directory where MongoDB was installed. We need redirect to data\db directory that we created in the folder MongoDB and create the database there. Following is the syntax for creating a database. This command creates the database and switches the user to it. To switch to any other database, same command is used. C:\Users\sahmed\MongoDB\bin> Mongo >use daycaredb To confirm the creation of database, the following command displays all the databases created, > show dbs daycaredb local 0.003GB 0.000GB

31 Generating JSON Documents Programmatically JSON documents were generated for the collection dailyreport. For the collection daycareinfo, 20 documents were generated. For employeeinfo, 205 documents were generated. For programinfo, 122 documents were generated. Generated documents were imported in the respective collections. Import command used for this purpose is discussed in section Populating the database To populate the database, we imported the programmatically generated JSON text files. The import command creates the database, creates the collection, and imports all JSON documents in the newly created collection. Following import command was used to import the JSON documents for the collection employeeinfo in to the database DayCareDB. :\Users\sahmed\MongoDB\bin>Mongoimport --db DayCareDB --collection employeeinfo --type JSON --file C:\Users\sahmed\Desktop\MongoDBmaPro\Employees9.JSON --JSON Array T17:07: connected to: localhost T17:07: imported 18 documents

32 Exporting and Importing Collection It is easy to export out the whole MongoDB collection in as a JSON text file. It is useful for creating quick backups, transfer documents to another database collection etc. It is easy to import collection if JSON documents as well. Command to import JSON text file in to collection is as follows, Mongoimport --db database Name --collection collectionname type json --file file.json Command to export documents from a collection and save in a file is as follows, mongoexport --db database Name --collection collectionname --out file.json In Figure 3.5.a and Figure 3.5.b, we transferred a collection from one database to another. The export command in Figure 3.5.b exports all the documents from a collection called dailyreport, from a test database called cccdb to a json text file called kidreport2.json. We transferred this json text file to the database we are using in this project. As demonstrated in figure 3.5.a, the import command takes the text file kidreport2.json that contains all the JSON documents for the collection kidreport and populates it. It imports the file from the specified location and populates the collection kidreport in our daycare database DayCareDB. Figure 3.5.a Importing documents to populate collection

33 Figure 3.5.b Export Operation to download documents from the collection 21

34 Changing Schema One of the feature of MongoDB is dynamic schema. Schema or data model in database is designed based on application requirements. According to this feature the schema or data model structure in MongoDB is not fixed or in other words flexible or dynamic. As requirements change, MongoDB database schema can be re-modeled accordingly. During building the RESTful API for this project, a need for schema redesigning appeared. While querying the data from the database, a need for additional fields in the documents in collection daycareinfo arose. The change in schema was executed by a bulk update operation was performed to update values for fields and insert additional new fields with new values. In Chapter 4, we explored all the query operations offered by MongoDB. These queries that were used to update the schema of the collection are demonstrated in that chapter.

35 23 4. COMMANDS AND QUERIES IN MONGODB MongoDB shell is a standalone MongoDB client that can interpreter commands written in JavaScript programs. To start the MongoDB Shell from command prompt, the user has to start from the directory where MongoDB was installed. The default data directory \data\db is needed to be created beforehand for the server to run. The command./bin/mongo starts the mongo shell. To demonstrate the commands and queries we are going to use database named daycaredb and collections called daycareinfo, employeeinfo, programinfo and dailyreport. Display all existing databases: >show dbs Switch to Database: >use daycaredb Creating database: New database is created when the first entry of a collection to a database is made. The database in which the collection belongs to, user is needed to switch to that database before performing the query.

36 CRUD Operations CRUD acronym stands for create, read, update and delete operations on the data. Create operation involves two types of inserts, single JSON document insert and multiple JSON documents inserts Create Create operation that inserts one document in the collection daycareinfo, contains the document needed to be inserted. If this database is nonexistent, this create operation creates the database, create the collection according to the collection name specified in the query and the collection would contain the document. For ease of use in this project we took the advantage of MongoDB generated Object id. While creating the documents, the object id field _id was excluded from the document and during insertion operation in the database, MongoDB included a unique Object id for each document created for the database. Figure a demonstrates command to insert one document in to the database DayCareDB. First command is to switch to DayCareDB. Second command db.daycareinfo.insertone() inserts a single document to the collection daycareinfo. Here insertone function performs a create operation, daycareinfo is the collection name and db is a global variable that points to the database DayCareDB that the user is currently using. After the document is inserted MongoDB shell returns a confirmation document that consists of two field value pairs. "acknowledged" : true, states that the document was inserted.

37 25 "insertedid" : ObjectId("5a0df1376faa7acf806c1563") states that MongoDB generated an object id which is the primary key for that document. Figure a Create operation by single document insertion Multiple documents can be inserted with a single query. Documents to be inserted are put in an array and the array of documents are inserted in the collection using a single create operation. As MongoDB supports dynamic schema, the documents may contain different schema or data model. Best practice for working with dynamic schema is that, the developers needs to review the schema or data model thoroughly so that working with different structured documents, stored in a common collection is manageable. In Figure b, this is a Create operation that inserts multiple documents in to the collection daycareinfo with dynamic schema. After the documents are inserted MongoDB shell returns confirmation document with the acknowledge field and insertedids field. Figure 4.3 demonstrates that the insertmany() function performs create operation by taking arrays of two

38 26 documents and inserts them. MongoDB shell confirms the operation by returning a document with acknowledge ; true field value pair and ObjectIds for the inserted documents in the field inseretids. Figure b Create Operation by multiple documents insertion

39 27 The documents that are inserted in the figure a and b does not contain a field _id. As _id field is the primary key for the documents if user does not provide this value in the documents being created, then MongoDB auto generates this field value pair for each of these documents. Figure c Document Inserted with JavaScript and mongodb Insert Operation Since MongoDB shell is JavaScript shell, we can use JavaScript along with mongodb commands to perform operations on the database. In Figure c a create operation is performed by creating a local variable which is a JavaScript object representing the document we want to insert in collection called daycareinfo. A local variable named doc is created where it has a JSON document as its value. The JSON Object has the document structure which we desire to inset in collection daycareinfo, The insert command, db.daycareinfo.insertone(doc) operates on the daycareinfo to inserts the JSON document stored in the object called doc.

40 28 We can create a database and populate collection by importing a JSON text file. Figure d demonstrates the command. The command mongoimport imports a JSON text file from the specified location and populates the collection in the specified database. if the specified database does not exist, then the query will create a database named DayCareDB, with a collection named programinfo and will populate it with the JSON documents from the text file. Figure d Populate Collection in database with import Operation

41 Read Basic syntax to Query a read operation in MongoDB is as following, db.collection.find( {filter }, {projection} ) Filter consists of field value pairs and projection consists of fields. The query finds the documents that contains specified field value pairs in filter and according to the fields in projection, the query displays those specified field value pairs from the document. Filter and projection part of the query are optional. The query uses a function find() that performs the read operation. The pretty() function displays the document in an indented format. Without this function the document is wrapped together and becomes difficult to read. A simple read operation having one filter and no projection is demonstrated in figure a, which finds all the documents in the collection employeeinfo having where the field Daycare has the value Daycare 1. This command displays the whole documents.

42 30 Figure a Read Operation Having One Filter And No Projection Filter may contain one or more field value pairs. More than one field value pair in filter is treated as AND condition between the fields. Query containing multiple field value pairs in the filter part, will display only those documents which contains all the specified fields with those specified values. this is demonstrated in figure b. the command finds and displays all the documents in the collection employeeinfo where the fields Daycare have the value Daycare 1 and field Program have the value Program 6.

43 31 Figure b Multiple Field-Value Pairs in Filter That Acts as AND Condition To add projection, we mention the fields we want to display from the filtered documents in the projection part of the query and assign those fields a Boolean value of 1. But in case if we want to display the filtered documents by excluding few fields, then in the projection part of the query we

44 32 assign a Boolean value of zero to those fields. As shown in figure c the query displays only the specified fields. For this the fields Name, Daycare and Program are assigned a Boolean value of 1 in the projection part of the query. Which displays only these fields and the object id _id from the filtered documents. Figure c Projection and Filer in Find Operation We can exclude the object id by assigning it a value of zero in the same query as demonstrated in Figure d. This query in Figure d, finds all the documents in employeeinfo who work in Daycare 1 and in Program 6, and display the document with three field value pairs, Name, Daycare and Program. In read operation ObjectID is displayed in the documents by default. But in this query since the field for ObjectID which is, _id is assigned a Boolean value of 0 in projection, the document will not display ObjectID value.

45 33 Figure d Excluding _id from the retrieved documents In figure e displays the whole document excluding the specified fields Name and Contact which are assigned a Boolean value of zero. There is restriction for assigning Boolean value of both zeros and ones in a single query. Only object id can be assigned 0 in the projection part of the query where fields are assigned value 1, as shown in Figure d. In the same query display some fields and exclude some fields is not possible. Which means a read query either may contain fields to be projected or excluded.

46 34 Figure e Retrieve All Except the Boolean Zero Assigned Fields in Projection To retrieve and display all documents from a collection, no filter or projection is required. Figure f demonstrates the read operation that retrieves all documents stored in collection daycareinfo.

47 35 Figure f Read Operation to Retrieve All Data A read operation performed by fineone() function that retrieves only the first documents it finds in the collection daycareinfo. Figure g demonstrate the command db.daycaeinfo.findone() which retrieves the first document it finds in the collection daycareinfo.

48 36 Figure g Read Operation to Retrieve the First Element Update Update operation modifies existing documents in a collection using three functions. During building the database, for one of the collection programinfo, value for a field was entered wrong. To correct this value an update operation is performed. In the figure a the find() function containing filter and projection finds all the documents in collection programinfo where the field Daycare has the value 4 and displays only the field programname from the retrieved documents. The query retrieves all the documents where value of Daycare is 4 and displays the field programname. In Figure b, the query updates the value of field programname for the Document where value of Daycare is 4. Previously the value for programname was 6 and after the update, value for programname is Program 6. Figure c retrieves the updated document to confirm the change.

49 37 Figure a display the document needed to be updated Figure b Update operation to change value of field

50 38 Figure c Display updated document According to the MongoDB manual there are three functions using which update operation is performed. These are, db.collection.updateone(<filter>, <update>, <options> ), updates value in one document db.collection.updatemany(<filter>, <update>, <options>), updates values in multiple documents db.collection.replaceone(<filter>, <update>, <options>), replaces a document [14]

51 39 The update operator $set is used to modify the value of a field. We can put a field value pair in filter to filter out the document that we want to modify. In the option part of the query if we put upsert: true, during an update operation, then, if no document was found that matched the filter, then, a new document will be inserted in the collection. If there is matching documents found according to the filter, then, that document will be modified or replaced [14] Delete Delete operation is performed with the functions deleteone() and deletemany(). Figure a Delete operation Figure b demonstrate a query that deletes a collection from the database. After switching to database, we see there are four collections presents. Db.collection.drop() deletes the collection specified in the query. In Figure b the query deletes the collection programinfo. In completion of the delete operation MongoDB shell returns a value true to indicate the collection is deleted.

52 Figure b Drop operation to Delete Collection 40

53 Query Documents Apart from the read operations discussed in section 4.1.2, there exists more operations with which documents can be retrieved or read Query Embedded Documents To use fields in query filter for embedded documents, dot notation is used to access the nested fields. Figure a Retrieve an Embedded Document with Dot Notation In Figure a the read operation retrieves a document which contains the value Daycare 1 for the field Daycare and contains embedded document with field value pair FirstName : Carol as the value for field Name.

54 42 Figure b Display a Field in Embedded Document Using Projection In Figure b, we used the same query filter but used projection to display specific field from the embedded document. Here the Contact field consists of a document named Address, which contains several field value pairs. We are interested to retrieve only the city field value pair. Hence in the query, in the projection part, we nest the fields using dot notation to assign it a Boolean value of one Query Operator In a query filter, query operator can be used. Some of the query operators are $in, $or, $lt, $gt. In Figure a displays documents from the collection employeeinfo where Daycare is Daycare 1 and FirstName for field Name is Carol or Cecilia. For Daycare and Name.FirstName implicitly logical AND is performed. The $in operator is used when the equality check is performed on the same field. In figure b a logical OR operation is performed to find documents from the collection employeeinfo where Name.FirstName is Carrol or Cecilia.

55 43 Figure b retrieves documents from the employeeinfo collection where Name.FirstName is Carrol OR Name.LastName is Walters. Here the logical operator OR is used to check the equality of two different fields. Figure a $in Query operator

56 Figure b $or Query operator 44

57 45 Figure c $lt operator inside $or Query operator $lt, $gt are less than and greater than operator respectively. Figure c displays a query where $lt operator is used inside a OR operation to retrieve documents from the collection employeeinfo where Program is Program 1 AND, Age is less than 25 OR EmployeeID is 20.

58 Projection of Array Elements To project a Documents in which arrays of documents are value for a field, following projection operators are used [14]. $elemmatch projects the array element that match the value. It is useful to match field value pairs in arrays of documents for embedded structures. For example, the following query returns only the documents from the array of Students where "PhotographPermission": "Yes. All the other embedded documents will not be displayed. >db.programinfo.find({},{"students": {$elemmatch: {"PhotographPermission": "Yes"}}}) $slice operator limits the number of elements returns from an array of documents [14]. The following query would return the first two elements from the array Students, db.programinfo.find({ "ProgramName": "Program 1", "Daycare": 1 }, { "Students": {$slice: 2} })

59 47 The following query would return the last two elements from the array Students, db.programinfo.find({ "ProgramName": "Program 1", "Daycare": 1 }, { "Students": {$slice: -2} }) $ operator is used with a field that has the documents of array as its value, to project only the first matching array document [14]. Following query displays the first element in the array Students where ProgramName is Program 1, Daycare is 2 and FirstName of the student is Macy. db.daycareinfo.find({ "ProgramName" :"Program 1", "Daycare": 2, "Students.Name.FirstName" : "Macy" },{ "Students.$": 1

60 48 }) 4.3 Aggregate Operation Aggregate operations perform on multiple documents where fields are grouped together to form a single value of more significant meaning or measurement Pipeline With aggregation pipeline documents can be displayed in aggregated result. In figure the documents are grouped by the field Daycare. There are 20 Daycare documents and each have number of documents with Program information. $sum operator counts the aggregated documents for each of the Daycare and displays it in the user defined field Total_Programs_Offered. >db.programinfo.aggregate([ {$group: { _id: $Daycare, Total_Programs_Offered : {$sum: 1} } },{$sort: {_id:1}} ])

61 49 Figure Pipeline Aggregation Operation $lookup for Left Outer Join One of the recent feature of MongoDB which immerged in the version MongoDB 3.4 is the feature of left outer join. Using $lookup operator two collections can be joined over a common field. The aggregation query in Figure a performs a left outer join between the collection employeeinfo and daycareinfo. Both are contained in the same database. The object id for the documents in daycareinfo are stored in the field _id, The object id of the daycareinfo is stored in a field called DaycareID in the documents of the collection employeeinfo. We are executing the query from employeeinfo collection, which is our local collection. From contains the name of the other collection. localfield and foreignfield are the common field over which the join operation will take place. Daycare_Info is a user defines field where the joined information will be documented. Figure b displays the result of the join operation. The new joined document is formed over the common value of DaycareID and _id fields from employeeinfo collection and daycareinfo

62 50 collection respectively. This document contains the fields from employeeinfo collection and the user defined field Daycare_Info, which contains the fields from daycareinfo collection. Figure a $Lookup for Left Outer Join

63 51 Figure b Results for $Lookup Operation 4.4 Queries used in the REST API Based on the database created for the daycare system a Rest API is built. The Rest API performs CRUD operations as well as few aggregation operations on the database collections. The following query is performed on the collection employeeinfo. This collection contains information about each employee. In each of these documents, along with employee information,

64 52 the daycare for which the employee works is stored. The following query groups the document based on the daycares. As a result, each group will contain all the documents of employees who work for that daycare. Counting these grouped documents gives us the total employees working in each daycare. var collection = db.collection('employeeinfo'); // Group documents by Daycare, count the number of aggregated documents for each daycare //which proves total employees in that daycare. collection.aggregate([ { $group: { _id: "$Daycare", "count": { $sum: 1 } } },{ $sort: { _id: 1 } } ]) The following query performs a similar aggregation operation on the collection programinfo, which stores the information about all the programs offered by the daycare. These documents contain, along with the program related information, the information about which daycare they are offered. The following query groups the documents by Daycare value and count the aggregated documents which gives us the total number of programs offered by each daycare

65 53 var collection = db.collection('programinfo'); // Group by documents, count total number of programs offered by each document collection.aggregate([ { $group: { _id: "$Daycare", "count": { $sum: 1 } } }, { $sort: { _id: 1 } } ]) The following query is used to display total number of students in each program that is offered in a daycare.

66 54 var collection = db.collection('daycareinfo'); // group by document, project program count, students count collection.aggregate([ { $group: { _id: { "Daycare": "$Daycare", "ProgramName": "$ProgramName", "Students": "$Students.StudentID" }, "count": { $sum: 1 } } }, { $sort: { _id: 1 } } ])

67 55 5. IMPLEMENT REST API USING MONGODB MongoDB is a database for modern web application [15]. MongoDB can handle exponentially increasing web user and growth in data. To build a REST api with MongoDB we are going to explore three different options for the programming language and related dependencies. 5.1 Introduction to REST Representational state transfer (REST) is a standard architecture for web services that allows requesting systems to access and manipulate web resources using HTTP protocols. REST uses a client-server model, where client sends HTTP requests (GET, POST, PUT, DELETE), along with a URL. The URL contains encoded variable parameters that describes the object to act upon and the server responds with a valid JavaScript Object Notation (JSON) [16]. The REST architecture is a collection of six constraints which serve as a collection of standards [17]. These are as follows, Client-Server: there must be a separation between server and client Stateless: session information is not retained by the server for multiple requests. Cacheable: Clients and intermediates can cache responses. Layered system: a transparent middleware is required for a consistent interaction between service and consumer. The system is designed such that the client is not able to detect if the connection between the client and the end server is direct, or there is an intermediary in between. Code on demand: by transferring the executable code, improve flexibility of the client

68 56 Uniform interface: this is a fundamental constraint to the design of REST service which simplifies and decouples the architecture and allows each part to evolve independently [18]. The CRUD acronym is used to describe database operations. CRUD stands for CREATE, READ, UPDATE, and DELETE which map to the HTTP verbs [16], as follows: POST: insert or create data. GET: read data. PUT: update data. DELETE: delete data. Some of the common HTTP result codes that are often used inside REST APIs according to [16] are as follows: OK Created (for POST) Bad Request (missing required parameters) Unauthorized (Missing authentication parameters) Forbidden (lacking required privileges) Not Found.

69 RESTful API With MongoDB as Backend Application Programming interface (API) allows two applications to communicate with each other [19]. Representative State Transfer (REST) Web API provides an interface for Web applications that communicate through internet using HTTP calls with action verbs (CRUD) MongoDB drivers MongoDB drivers are client libraries using which API communicates with MongoDB database. These drivers handle all interaction with the database in a language appropriate to the application [19]. MongoDB supports 11 drivers across 10 programming languages [19]. This driver as listed in the Table 5.2.1, facilitates flexibility on choosing programming language to build the API using MongoDB as the backend database [20]. The subsequent sections discuss how to use these drivers, three popular programming languages, C#, Java, and JavaScript can be paired with MongoDB and the dependencies it carries to build REST API. Table MongoDB Drivers Languages Release Source C mongo-c-driver github.com/mongodb/ mongo-c-driver C++ mongocxx 3.2.0, the MongoDB C++11 github.com/mongodb/mongo-cdriver/releases/latest MongoDB.github.io/mongo-cxxdriver/mongocxx-v3/installation/ github.com/mongodb/ mongo-cxx-driver

70 58 C#.NET Driver Version github.com/mongodb/mongo-csharpdriver/releases/latest github.com/mongodb/ mongo-csharp-driver Java NodeJS Perl Java Driver rc0 Node Driver V MongoDB-v1.8.0 metacpan.org/release/mongodb github.com/mongodb/ mongo-java-driver github.com/mongodb/n ode-mongodb-native github.com/mongodb/ mongo-perl-driver PHP Version pecl.php.net/package/mongodb Python pymongo Motor motor 1.1 pypi.python.org/pypi/pymongo/ pypi.python.org/pypi/motor/ Ruby Mongo rubygems.org/gems/mongo Scala mongo-scala-driver github.com/mongodb/mongo-javadriver/releases/latest github.com/mongodb/node-mongodbnative/releases/tag/v MongoDB.github.io/mongo-scaladriver/?_ga= github.com/mongodb/ mongo-php-driver github.com/mongodb/ mongo-python-driver github.com/mongodb/ motor github.com/mongodb/ mongo-ruby-driver github.com/mongodb/ mongo-scala-driver

71 Connecting with.net: C# framework MongoDB.NET Driver provides asynchronous interaction with MongoDB. MongoDB Driver is built on top of a Core library using which alternative or experimental high-level APIs can be built. A standalone BOSON library with a serialization infrastructure can be built using high performance serialization [21]. System Requirements for the driver requires.net 4.5 or later to utilize the libraries. Using Visual studio 2015 the current version of the C# Driver has been built and tested. Dependency management based on the driver and version for MongoDB is 3.2, Supported operating systems are Mac OS X 10.7 or up, Ubuntu or up, Windows 7 or up. For all these operating systems only 64-bit is supported. For web browser, Internet explorer is not supported. Firefox 39.0 or up and Chrome 43 or up is supported [22]. Installation Process: There are two options to install MongoDB driver for C# and.net framework. These are as following, Nuget Installation: Simplest way to use driver is through Nuget. Figure a displays the UI for nuget installation from MongoDB website. [MongoDB.github.io/mongo-csharp-driver/] Following are the 4 packages available on nuget, MongoDB.Driver, MongoDB.Driver.Core, MongoDB.Bson, mongocsharpdriver [23].

72 60 Figure a Driver Installation via Nuget Binary Installation: From the release section in the GitHub repository of MongoDB, zip files for each release can be downloaded. Connecting with MongoDB: The following code in the client program establishes connection directly to a single MongoDB server [24], var client = new MongoClient();

73 61 alternatively, using a connection string, connection with MongoDB server can be established [24], var client = new MongoClient("MongoDB://localhost:27017"); MongoClient is an instance of connection to database from a pool of connections. Only one instance of MongoClient is required for a single or multithreaded connection to the database. Documentation on MongoDB.NET Driver API is available in the official website of MongoDB in the documentation section for C# drivers [25] Connecting with Java framework The recommended procedure to install driver for Java is through the dependency management system. The MongoDB-driver is the updated Java driver that includes both the legacy API as well as a new generic MongoCollection interface [26]. <dependencies> <dependency> <groupid>org.mongodb</groupid> <artifactid>mongo-java-driver</artifactid> <version>3.6.1</version> </dependency>

74 62 </dependencies> [26] The legacy mongo-java-driver uber jar is still available. The uber jar contains: the BSON library, the core library, and the MongoDB-driver. <dependencies> <dependency> <groupid>org.mongodb</groupid> <artifactid>mongo-java-driver</artifactid> <version>3.6.1</version> </dependency> </dependencies> <dependencies> <dependency> <groupid>org.apache.spark</groupid> <artifactid>spark-core_2.11</artifactid> <version>2.2.0</version> </dependency> <dependency> <groupid>org.mongodb.spark</groupid> <artifactid>mongo-spark-connector_2.11</artifactid>

75 63 <version>2.2.0</version> </dependency> <dependency> <groupid>org.apache.spark</groupid> <artifactid>spark-sql_2.11</artifactid> <version>2.2.0</version> </dependency> </dependencies> [27] System requirements for MongoDB Java Driver are: 1) MongoDB version 3.2 or up, 2) operating system version for Mac OS X is 10.7 or later, Ubuntu or later, Windows 7 or later. MongoDB is only supported in 64-bit OS. Software requirements are Java7, MongoDB Java Driver 3.0.0, spark 1.1.1, Maven 2, mongoproc 3.0 or up. MongoDB Java driver is available as eclipse plug-in. To connect to MongoDB from Java program a running deployment of MongoDB, MongoDB driver and some import statements are required. The import statements required in the Java program are listed as follows, [28] import com.mongodb.mongoclient; import com.mongodb.mongoclienturi; import com.mongodb.serveraddress; import com.mongodb.mongocredential;

76 64 import com.mongodb.mongoclientoptions; import java.util.arrays; According to [29], to connect to a standalone MongoDB instance the following code in the Java program is used. MongoClient mongoclient = new MongoClient(); This creates a MongoClient() instance which establish connections to the database. One instance of class MongoClient is sufficient for multiple threads that connects to the database. If the object of the MongoClient is instantiated without any parameters then it connects to a MongoDB instance that is running on localhost on port Alternatively, explicit specification of hostname during the instantiation will connect to a MongoDB instance running on the specified host on port this can be coded as MongoClient mongoclient = new MongoClient( "host1" ); Or connection can be established by explicit specification of the hostname and the port number as follows, MongoClient mongoclient = new MongoClient( "host1", ); Or MongoClientURI connection string can be specified in the program to connect to a running instance of MongoDB as follows, MongoClient mongoclient = new MongoClient ( new MongoClientURI("MongoDB://host1:27017")

77 65 ); Connecting with Node.js: JavaScript framework NPM is a package manager for JavaScript. It is software registry with packages of code that developers can share and reuse. Node.js is installed using npm and all the dependencies are managed by it. MongoDB node Drive installation: MongoDB driver and its dependencies are also installed in the following command, >npm install mongod save This downloads the MongoDB driver and adds dependency in the package.json file of the project. Package.json file is where all the dependencies are recorded for a node.js project. System Requirements for using driver for node.js requires web browser to have Firefox 39.0 or higher, or Chrome 43 or higher version. Internet explorer is not supported for drivers. Requirement for operating system includes, Mac OS X 10.7 or higher, Ubuntu or higher, Windows 7 or higher. For all operating system 64 bit is supported. Required MongoDB version is 3.2 or higher. MongoDB node.js drivers are supported in Visual Studio 15 and Linux OS [29]. To connect to a single MongoDB instance MongoClient.connect method is used. A running MongoDB deployment and driver is required. The code to be used in the nodejs program, according to [29], to connect to a MongoDB instance running on localhost using port using URI connection string is as follows,

78 66 const MongoClient = require('mongodb').mongoclient; const assert = require('assert'); // Connection URL const url = 'MongoDB://localhost:27017'; // Database Name const dbname = 'DayCareDB'; // Use connect method to connect to the server MongoClient.connect(url, function(err, client) { assert.equal(null, err); console.log("connected successfully to server"); const db = client.db(dbname); client.close(); });

79 MEAN stack Among the three programming frameworks we discussed in the previous section with which the process of binding MongoDB as backend database can be achieved, we picked nodejs to implement RESTful API on top of the MongoDB database that we created. In this RESTful Web API MongoDB and nodejs is used for backend and AngularJS for front end. The programming stack using these programming languages is called MEAN. The MEAN stack can be summarized as follows M = MongoDB: NoSQL Object Data Model for node.js. E = ExpressJS: a lightweight web application framework. A = AngularJS: a framework for creating HTML5 and JavaScript-rich web applications. N = NodeJS: a server-side JavaScript interpreter Functional Requirements for the REST API In this API two major functional features are created in two pages of the application using the front-end programming language AngularJS. These features are, 1) a dash board that displays data from the database in graphical format and 2) a single page REST interface that lets the client perform CRUD operation on the database. These two features are explained in detail as following,

80 68 1) Dashboard for the day care database displays data from four different collections in graph format. i) Total number of all the employees in each of the branch of the day care is displayed in horizontal bar graph format, ii) total number of programs offered in each of the branch are displayed in line graph, iii) for each of the branches, for every program, total number of students enrolled are displayed in vertical graphs and iv) for a branch, total students enrolled, total employees working and total programs offered are displayed in pie chart format. 2) CRUD operation page where loaded for the first time all the information about all the branches are displayed by performing a read operation. Any update on the database refreshes the page automatically and the new data is displayed on the page. On this page the client can perform, i) insert new record in daycare, ii) edit an existing daycare record in the database and the page will be updated with the updated information iii) An existing daycare record can be deleted from the database.

81 Setting up a MEAN project To start a Node application the package.json file is created first. The dependency file package.json, includes all the dependencies and their versions for the MEAN API. Package.json file for this project is as follows, { "name": "day-care-dash-board", "version": "1.0.0", "description": "Daycare Dashboard", "main": "app.js", "author": { "name": "sahmed" }, "dependencies": { "angular-chart.js": "^1.1.1", "body-parser": "^1.18.1", "chart.js": "^2.7.0", "express": "^4.15.4", "MongoDB": "^2.2.21", "mongoose": "^ ", "node-restful": "^0.2.6", } }

82 70 In the list of dependencies MongoDB is the native driver for interacting with MongoDB instance in the project. Express is a nodejs web application framework that will help us create our application. App.js is the main node application. In app.js, all the modules (libraries) used in the project are declared, configuration of MongoDB database is done and connection to the database is established. ExpressJS code also resides with in app.js. ExpressJS creates an application which listens on port 3000 for incoming HTTP requests from the front-end AngularJS, and creates routes that map the incoming HTTP requests with MongoDB query strings When requests are received, they are queued in the middleware. Each of these requests from the middleware is given two objects to store the results, a req (request) object and a res (results) object. The app.use() function creates new middlewares. The main middleware is called router, which routes each different URL/verb combination to a specific callback function. We followed MVC structure where MongoDB is our data model. Connecting to it, first a simple get request retrieves data from a collection and displays it to the console. Next to build controller a folder called controller was created which resides in a folder called public in the application directory. The view of the MVC model are HTML files which also resides in the public folder. Figure 5.4.a displays the directory structure of this project.

83 71 Figure a Directory Structure of The Project The two controllers for the two REST Web pages are controller_dashboard.js and controller.js. These two controller files are located in the public/controller folder. The views for these two pages are dashboard.html and index.html, which are located in the public folder. The controllers take the http requests from the frontend, at the backend the data is retrieved by the corresponding query. The retrieved data is manipulated by the code in the controller and passed on to the view.

84 72 The view which are the HTML files, contains the AngularJS and bootstrap code from CDN links. AngularJS is a structural framework for dynamic web applications. It allows us to use HTML as template language with which we can extend the syntax of HTML to the component of the application program. The data binding and dependency injection in AngulerJS eliminate much of the codes required to be written by the programmers. The CDN links used in both the html files are as follows, AngularJS scripts are included from Google CDN, [30] " ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script> <script src="controllers/controller_dashboard.js" Bootstrap CDN from official webpage of BootstrapCDN, [31] " maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384- BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" For dashboard.html, an additional CDN link is used to display the data in graphical representation. The link is obtained from Chart.js cdnjs.cloudflare.com/ajax/libs/chart.js/2.1.3/chart.min.js"></script> <div class="container" ng-controller="appctrl_dashboard" The following is part of nodejs code in the file app.js. that creates routes by mapping URL in browser with the string or path that performs a query on the database. // Routes app.use(express.static( dirname + '/public'));

85 73 app.get('/daycarelist', function (req, res) { // Use connect method to connect to the Server MongoClient.connect(url, function (err, db) { console.log("connected correctly to server"); var collection = db.collection('daycareinfo'); // Get documents that match the query collection.find({}, { "Daycare": 1, "Address.Street": 1, "Address.City": 1 }).toarray(function (err, docs) { assert.equal(null, err); console.log(docs); res.setheader('content-type', 'application/json '); res.json (docs); db.close(); }); }); });

86 74 In the controller.js file, the controller receives the arrays of documents returned by the query, and assigned to the variable daycare. var refresh = function () { $http.get("/daycarelist" ).then(function (success) { $scope.daycarelist = success.data; $scope.daycare = {}; }, function (error) { }); }); In the View index.html, for each one of these arrays of documents, the variable document accesses the fields in the document and display them in tabular form as shown below, <td><input class="form-control" ng-model="daycare.daycare" /></td> <td><input class="form-control" ng-model="daycare.address.street" /></td> <td><input class="form-control" ng-model="daycare.address.city" /></td> The retrieved data is displayed as shown in Figure b. where when the page is loaded it displays name and address of all the daycare branches from the database. The client can enter new daycare branch information and the Add Daycare button will insert that data in the database. There is a Delete and Edit button next to each daycare information. Delete button,

87 75 deletes the daycare branch information from the database. Edit button will put the day care information in the form. Client can edit the data and Update button will update the information in the database. Figure b RESTful Page for CRUD Operation Using chart.js in View dashboard.html, we display the data in four different graphical representation, horizontal bar, bar, line, and pie. For the graphical representation, data is manipulated in controller, all of which are HTTP get requests performing advanced queries to group and project the data as required. The following nodejs code is part of the app.js code that maps URL in browser with the string/path that performs query on the database to retrieved documents groups by the specified field.

88 76 app.get('/dashboardallstudents', function (req, res) { // Use connect method to connect to the Server MongoClient.connect(url, function (err, db) { console.log("connected correctly to server"); var collection = db.collection('programinfo'); // Get first documents that match the query collection.aggregate([{ $group: { _id: { "Daycare": "$Daycare", "ProgramName": "$ProgramName", "Students": "$Studnets.StudentID" }, "count": { $sum: 1 } } }, { $sort: { _id: 1 } }]).toarray(function (err, docs) { assert.equal(null, err); console.log(docs); res.setheader('content-type', 'application/json '); res.json (docs); db.close(); }); }); });

89 77 The following controller code in controller_dashboard.js received the arrays of documents from app.js, iterates through them and set up the modules for chart, and passes them to the View dashboard.html $http.get("/dashboardstudents").then(function (success) { $scope.daycarelist = success.data; $scope.daycare = {}; var datatypearr = []; var datavaluearr = []; //for (var entry in $scope.daycarelist) { for (var i = 0, len = $scope.daycarelist.length; i < len; i++) { datatypearr.push("branch " + $scope.daycarelist[i]._id.daycare + " " + $scope.daycarelist[i]._id.programname ); if ($scope.daycarelist[i]._id.students) datavaluearr.push($scope.daycarelist[i]._id.students.length); else datavaluearr.push(0); //break; }

90 78 //Setting up bar chart modules var ctx = document.getelementbyid("mychart3"); var mychart = new Chart(ctx, { type: 'bar', data: { labels: datatypearr, datasets: [{ label: 'Students Enrolled', data: datavaluearr, backgroundcolor: [ 'rgba(255, 99, 132, 0.2)',...], bordercolor: [ 'rgba(255,99,132,1)',...], borderwidth: 1 }] }, options: { scales: {

91 79 yaxes: [{ ticks: { beginatzero: true } }] } } }); Following is the part of code in View dashboard.html that displays the third chart in Figure c. <table style="width:100%"> <tr> <td style="width:100%"> <canvas id="mychart3" style="width:10%; height:20%;"></canvas> </td> </tr></table>

92 80 Figure b displays four charts representing 1) total number of all the employees in each of the branch by horizontal bar chart, 2) displays total number of programs offered in each of the branch using line chart, 3) displays for each of the branches, for every program, total number of students enrolled using bar chart, and 4) displays for a branch, total students enrolled, total employees working and total programs offered using pie chart.

93 Figure c Page displaying the Dashboard 81

MongoDB Tutorial for Beginners

MongoDB Tutorial for Beginners MongoDB Tutorial for Beginners Mongodb is a document-oriented NoSQL database used for high volume data storage. In this tutorial you will learn how Mongodb can be accessed and some of its important features

More information

ITG Software Engineering

ITG Software Engineering Introduction to MongoDB Course ID: Page 1 Last Updated 12/15/2014 MongoDB for Developers Course Overview: In this 3 day class students will start by learning how to install and configure MongoDB on a Mac

More information

Course Content MongoDB

Course Content MongoDB Course Content MongoDB 1. Course introduction and mongodb Essentials (basics) 2. Introduction to NoSQL databases What is NoSQL? Why NoSQL? Difference Between RDBMS and NoSQL Databases Benefits of NoSQL

More information

MongoDB An Overview. 21-Oct Socrates

MongoDB An Overview. 21-Oct Socrates MongoDB An Overview 21-Oct-2016 Socrates Agenda What is NoSQL DB? Types of NoSQL DBs DBMS and MongoDB Comparison Why MongoDB? MongoDB Architecture Storage Engines Data Model Query Language Security Data

More information

Advanced Database Project: Document Stores and MongoDB

Advanced Database Project: Document Stores and MongoDB Advanced Database Project: Document Stores and MongoDB Sivaporn Homvanish (0472422) Tzu-Man Wu (0475596) Table of contents Background 3 Introduction of Database Management System 3 SQL vs NoSQL 3 Document

More information

Brad Dayley. Sams Teach Yourself. NoSQL with MongoDB. SAMS 800 East 96th Street, Indianapolis, Indiana, USA

Brad Dayley. Sams Teach Yourself. NoSQL with MongoDB. SAMS 800 East 96th Street, Indianapolis, Indiana, USA Brad Dayley Sams Teach Yourself NoSQL with MongoDB SAMS 800 East 96th Street, Indianapolis, Indiana, 46240 USA Table of Contents Introduction 1 How This Book Is Organized 1 Code Examples 2 Special Elements

More information

The course modules of MongoDB developer and administrator online certification training:

The course modules of MongoDB developer and administrator online certification training: The course modules of MongoDB developer and administrator online certification training: 1 An Overview of the Course Introduction to the course Table of Contents Course Objectives Course Overview Value

More information

Group13: Siddhant Deshmukh, Sudeep Rege, Sharmila Prakash, Dhanusha Varik

Group13: Siddhant Deshmukh, Sudeep Rege, Sharmila Prakash, Dhanusha Varik Group13: Siddhant Deshmukh, Sudeep Rege, Sharmila Prakash, Dhanusha Varik mongodb (humongous) Introduction What is MongoDB? Why MongoDB? MongoDB Terminology Why Not MongoDB? What is MongoDB? DOCUMENT STORE

More information

MongoDB. An introduction and performance analysis. by Rico Suter

MongoDB. An introduction and performance analysis. by Rico Suter MongoDB An introduction and performance analysis by Rico Suter Contents What is MongoDB Features Queries Performance Conclusion What is MongoDB Databases Collections Documents JSON structured MongoDB Database

More information

Document Databases: MongoDB

Document Databases: MongoDB NDBI040: Big Data Management and NoSQL Databases hp://www.ksi.mff.cuni.cz/~svoboda/courses/171-ndbi040/ Lecture 9 Document Databases: MongoDB Marn Svoboda svoboda@ksi.mff.cuni.cz 28. 11. 2017 Charles University

More information

MEAN Stack. 1. Introduction. 2. Foundation a. The Node.js framework b. Installing Node.js c. Using Node.js to execute scripts

MEAN Stack. 1. Introduction. 2. Foundation a. The Node.js framework b. Installing Node.js c. Using Node.js to execute scripts MEAN Stack 1. Introduction 2. Foundation a. The Node.js framework b. Installing Node.js c. Using Node.js to execute scripts 3. Node Projects a. The Node Package Manager b. Creating a project c. The package.json

More information

Oral Questions and Answers (DBMS LAB) Questions & Answers- DBMS

Oral Questions and Answers (DBMS LAB) Questions & Answers- DBMS Questions & Answers- DBMS https://career.guru99.com/top-50-database-interview-questions/ 1) Define Database. A prearranged collection of figures known as data is called database. 2) What is DBMS? Database

More information

Document Object Storage with MongoDB

Document Object Storage with MongoDB Document Object Storage with MongoDB Lecture BigData Analytics Julian M. Kunkel julian.kunkel@googlemail.com University of Hamburg / German Climate Computing Center (DKRZ) 2017-12-15 Disclaimer: Big Data

More information

NoSQL Databases Analysis

NoSQL Databases Analysis NoSQL Databases Analysis Jeffrey Young Intro I chose to investigate Redis, MongoDB, and Neo4j. I chose Redis because I always read about Redis use and its extreme popularity yet I know little about it.

More information

MongoDB Step By Step. By B.A.Khivsara Assistant Professor Department of Computer Engineering SNJB s COE,Chandwad

MongoDB Step By Step. By B.A.Khivsara Assistant Professor Department of Computer Engineering SNJB s COE,Chandwad MongoDB Step By Step By B.A.Khivsara Assistant Professor Department of Computer Engineering SNJB s COE,Chandwad Outline Introduction to MongoDB Installation in Ubuntu Starting MongoDB in Ubuntu Basic Operations

More information

MongoDB Web Architecture

MongoDB Web Architecture MongoDB Web Architecture MongoDB MongoDB is an open-source, NoSQL database that uses a JSON-like (BSON) document-oriented model. Data is stored in collections (rather than tables). - Uses dynamic schemas

More information

MONGODB INTERVIEW QUESTIONS

MONGODB INTERVIEW QUESTIONS MONGODB INTERVIEW QUESTIONS http://www.tutorialspoint.com/mongodb/mongodb_interview_questions.htm Copyright tutorialspoint.com Dear readers, these MongoDB Interview Questions have been designed specially

More information

MongoDB. History. mongodb = Humongous DB. Open-source Document-based High performance, high availability Automatic scaling C-P on CAP.

MongoDB. History. mongodb = Humongous DB. Open-source Document-based High performance, high availability Automatic scaling C-P on CAP. #mongodb MongoDB Modified from slides provided by S. Parikh, A. Im, G. Cai, H. Tunc, J. Stevens, Y. Barve, S. Hei History mongodb = Humongous DB Open-source Document-based High performance, high availability

More information

FLORIDA DEPARTMENT OF TRANSPORTATION PRODUCTION BIG DATA PLATFORM

FLORIDA DEPARTMENT OF TRANSPORTATION PRODUCTION BIG DATA PLATFORM FLORIDA DEPARTMENT OF TRANSPORTATION PRODUCTION BIG DATA PLATFORM RECOMMENDATION AND JUSTIFACTION Executive Summary: VHB has been tasked by the Florida Department of Transportation District Five to design

More information

CS193X: Web Programming Fundamentals

CS193X: Web Programming Fundamentals CS193X: Web Programming Fundamentals Spring 2017 Victoria Kirst (vrk@stanford.edu) CS193X schedule Today - MongoDB - Servers and MongoDB Friday - Web application architecture - Authentication MongoDB installation

More information

MongoDB. CSC309 TA: Sukwon Oh

MongoDB. CSC309 TA: Sukwon Oh MongoDB CSC309 TA: Sukwon Oh Review SQL declarative language for querying data tells what to find and not how to find Review RDBMS Characteristics Easy to use Complicated to use it right Fixed schema Difficult

More information

This tutorial introduces you to key DynamoDB concepts necessary for creating and deploying a highly-scalable and performance-focused database.

This tutorial introduces you to key DynamoDB concepts necessary for creating and deploying a highly-scalable and performance-focused database. About the Tutorial DynamoDB is a fully-managed NoSQL database service designed to deliver fast and predictable performance. It uses the Dynamo model in the essence of its design, and improves those features.

More information

NosDB vs DocumentDB. Comparison. For.NET and Java Applications. This document compares NosDB and DocumentDB. Read this comparison to:

NosDB vs DocumentDB. Comparison. For.NET and Java Applications. This document compares NosDB and DocumentDB. Read this comparison to: NosDB vs DocumentDB Comparison For.NET and Java Applications NosDB 1.3 vs. DocumentDB v8.6 This document compares NosDB and DocumentDB. Read this comparison to: Understand NosDB and DocumentDB major feature

More information

מרכז התמחות DBA. NoSQL and MongoDB תאריך: 3 דצמבר 2015 מציג: רז הורוביץ, ארכיטקט מרכז ההתמחות

מרכז התמחות DBA. NoSQL and MongoDB תאריך: 3 דצמבר 2015 מציג: רז הורוביץ, ארכיטקט מרכז ההתמחות מרכז התמחות DBA NoSQL and MongoDB תאריך: 3 דצמבר 2015 מציג: רז הורוביץ, ארכיטקט מרכז ההתמחות Raziel.Horovitz@tangram-soft.co.il Matrix IT work Copyright 2013. Do not remove source or Attribution from any

More information

Using the MySQL Document Store

Using the MySQL Document Store Using the MySQL Document Store Alfredo Kojima, Sr. Software Dev. Manager, MySQL Mike Zinner, Sr. Software Dev. Director, MySQL Safe Harbor Statement The following is intended to outline our general product

More information

By Prof. Bhavana A.Khivsara

By Prof. Bhavana A.Khivsara By Prof. Bhavana A.Khivsara Introduction to MongoDB Installation in Windows Starting MongoDB in Windows Basic Operations CRUD Operations Indexing Aggregation XAMPP Installation PHP-Mongo setting in XAMPP

More information

How to Lift-and-Shift a Line of Business Application onto Google Cloud Platform

How to Lift-and-Shift a Line of Business Application onto Google Cloud Platform How to Lift-and-Shift a Line of Business Application onto Google Cloud Platform by Andy Wu, Solutions Architect, Magenic White Paper How to Lift-and-Shift a Line of Business Application onto Google Cloud

More information

MongoDB Introduction and Red Hat Integration Points. Chad Tindel Solution Architect

MongoDB Introduction and Red Hat Integration Points. Chad Tindel Solution Architect MongoDB Introduction and Red Hat Integration Points Chad Tindel Solution Architect MongoDB Overview 350+ employees 1,000+ customers 13 offices around the world Over $231 million in funding 2 MongoDB The

More information

Review. Fundamentals of Website Development. Web Extensions Server side & Where is your JOB? The Department of Computer Science 11/30/2015

Review. Fundamentals of Website Development. Web Extensions Server side & Where is your JOB? The Department of Computer Science 11/30/2015 Fundamentals of Website Development CSC 2320, Fall 2015 The Department of Computer Science Review Web Extensions Server side & Where is your JOB? 1 In this chapter Dynamic pages programming Database Others

More information

Web Services Week 10

Web Services Week 10 Web Services Week 10 Emrullah SONUÇ Department of Computer Engineering Karabuk University Fall 2017 1 Recap BPEL Process in Netbeans RESTful Web Services Introduction to Rest Api 2 Contents RESTful Web

More information

MongoDB CRUD Operations

MongoDB CRUD Operations MongoDB CRUD Operations Release 3.2.3 MongoDB, Inc. February 17, 2016 2 MongoDB, Inc. 2008-2016 This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 United States License

More information

Oracle NoSQL Database Enterprise Edition, Version 18.1

Oracle NoSQL Database Enterprise Edition, Version 18.1 Oracle NoSQL Database Enterprise Edition, Version 18.1 Oracle NoSQL Database is a scalable, distributed NoSQL database, designed to provide highly reliable, flexible and available data management across

More information

MongoDB CRUD Operations

MongoDB CRUD Operations MongoDB CRUD Operations Release 3.2.4 MongoDB, Inc. March 11, 2016 2 MongoDB, Inc. 2008-2016 This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 United States License

More information

Oracle NoSQL Database Enterprise Edition, Version 18.1

Oracle NoSQL Database Enterprise Edition, Version 18.1 Oracle NoSQL Database Enterprise Edition, Version 18.1 Oracle NoSQL Database is a scalable, distributed NoSQL database, designed to provide highly reliable, flexible and available data management across

More information

New Oracle NoSQL Database APIs that Speed Insertion and Retrieval

New Oracle NoSQL Database APIs that Speed Insertion and Retrieval New Oracle NoSQL Database APIs that Speed Insertion and Retrieval O R A C L E W H I T E P A P E R F E B R U A R Y 2 0 1 6 1 NEW ORACLE NoSQL DATABASE APIs that SPEED INSERTION AND RETRIEVAL Introduction

More information

MongoDB and Mysql: Which one is a better fit for me? Room 204-2:20PM-3:10PM

MongoDB and Mysql: Which one is a better fit for me? Room 204-2:20PM-3:10PM MongoDB and Mysql: Which one is a better fit for me? Room 204-2:20PM-3:10PM About us Adamo Tonete MongoDB Support Engineer Agustín Gallego MySQL Support Engineer Agenda What are MongoDB and MySQL; NoSQL

More information

Kim Greene - Introduction

Kim Greene - Introduction Kim Greene kim@kimgreene.com 507-216-5632 Skype/Twitter: iseriesdomino Copyright Kim Greene Consulting, Inc. All rights reserved worldwide. 1 Kim Greene - Introduction Owner of an IT consulting company

More information

CHAPTER. Oracle Database 11g Architecture Options

CHAPTER. Oracle Database 11g Architecture Options CHAPTER 1 Oracle Database 11g Architecture Options 3 4 Part I: Critical Database Concepts Oracle Database 11g is a significant upgrade from prior releases of Oracle. New features give developers, database

More information

NOSQL EGCO321 DATABASE SYSTEMS KANAT POOLSAWASD DEPARTMENT OF COMPUTER ENGINEERING MAHIDOL UNIVERSITY

NOSQL EGCO321 DATABASE SYSTEMS KANAT POOLSAWASD DEPARTMENT OF COMPUTER ENGINEERING MAHIDOL UNIVERSITY NOSQL EGCO321 DATABASE SYSTEMS KANAT POOLSAWASD DEPARTMENT OF COMPUTER ENGINEERING MAHIDOL UNIVERSITY WHAT IS NOSQL? Stands for No-SQL or Not Only SQL. Class of non-relational data storage systems E.g.

More information

EnterSpace Data Sheet

EnterSpace Data Sheet EnterSpace 7.0.4.3 Data Sheet ENTERSPACE BUNDLE COMPONENTS Policy Engine The policy engine is the heart of EnterSpace. It evaluates digital access control policies and makes dynamic, real-time decisions

More information

Full Stack Web Developer Nanodegree Syllabus

Full Stack Web Developer Nanodegree Syllabus Full Stack Web Developer Nanodegree Syllabus Build Complex Web Applications Before You Start Thank you for your interest in the Full Stack Web Developer Nanodegree! In order to succeed in this program,

More information

Hustle Documentation. Release 0.1. Tim Spurway

Hustle Documentation. Release 0.1. Tim Spurway Hustle Documentation Release 0.1 Tim Spurway February 26, 2014 Contents 1 Features 3 2 Getting started 5 2.1 Installing Hustle............................................. 5 2.2 Hustle Tutorial..............................................

More information

Open source, high performance database. July 2012

Open source, high performance database. July 2012 Open source, high performance database July 2012 1 Quick introduction to mongodb Data modeling in mongodb, queries, geospatial, updates and map reduce. Using a location-based app as an example Example

More information

Relational to NoSQL: Getting started from SQL Server. Shane Johnson Sr. Product Marketing Manager Couchbase

Relational to NoSQL: Getting started from SQL Server. Shane Johnson Sr. Product Marketing Manager Couchbase Relational to NoSQL: Getting started from SQL Server Shane Johnson Sr. Product Marketing Manager Couchbase Today s agenda Why NoSQL? Identifying the right application Modeling your data Accessing your

More information

DIGIT.B4 Big Data PoC

DIGIT.B4 Big Data PoC DIGIT.B4 Big Data PoC GROW Transpositions D04.01.Information System Table of contents 1 Introduction... 4 1.1 Context of the project... 4 1.2 Objective... 4 2 Technologies used... 5 2.1 Python... 5 2.2

More information

MongoDB Schema Design

MongoDB Schema Design MongoDB Schema Design Demystifying document structures in MongoDB Jon Tobin @jontobs MongoDB Overview NoSQL Document Oriented DB Dynamic Schema HA/Sharding Built In Simple async replication setup Automated

More information

Jargons, Concepts, Scope and Systems. Key Value Stores, Document Stores, Extensible Record Stores. Overview of different scalable relational systems

Jargons, Concepts, Scope and Systems. Key Value Stores, Document Stores, Extensible Record Stores. Overview of different scalable relational systems Jargons, Concepts, Scope and Systems Key Value Stores, Document Stores, Extensible Record Stores Overview of different scalable relational systems Examples of different Data stores Predictions, Comparisons

More information

RavenDB & document stores

RavenDB & document stores université libre de bruxelles INFO-H415 - Advanced Databases RavenDB & document stores Authors: Yasin Arslan Jacky Trinh Professor: Esteban Zimányi Contents 1 Introduction 3 1.1 Présentation...................................

More information

SQL, NoSQL, MongoDB. CSE-291 (Cloud Computing) Fall 2016 Gregory Kesden

SQL, NoSQL, MongoDB. CSE-291 (Cloud Computing) Fall 2016 Gregory Kesden SQL, NoSQL, MongoDB CSE-291 (Cloud Computing) Fall 2016 Gregory Kesden SQL Databases Really better called Relational Databases Key construct is the Relation, a.k.a. the table Rows represent records Columns

More information

Scaling for Humongous amounts of data with MongoDB

Scaling for Humongous amounts of data with MongoDB Scaling for Humongous amounts of data with MongoDB Alvin Richards Technical Director, EMEA alvin@10gen.com @jonnyeight alvinonmongodb.com From here... http://bit.ly/ot71m4 ...to here... http://bit.ly/oxcsis

More information

DATABASE SYSTEMS. Database programming in a web environment. Database System Course, 2016

DATABASE SYSTEMS. Database programming in a web environment. Database System Course, 2016 DATABASE SYSTEMS Database programming in a web environment Database System Course, 2016 AGENDA FOR TODAY Advanced Mysql More than just SELECT Creating tables MySQL optimizations: Storage engines, indexing.

More information

Scaling DreamFactory

Scaling DreamFactory Scaling DreamFactory This white paper is designed to provide information to enterprise customers about how to scale a DreamFactory Instance. The sections below talk about horizontal, vertical, and cloud

More information

API Gateway Version September Key Property Store User Guide

API Gateway Version September Key Property Store User Guide API Gateway Version 7.5.2 15 September 2017 Key Property Store User Guide Copyright 2017 Axway All rights reserved. This documentation describes the following Axway software: Axway API Gateway 7.5.2 No

More information

COPYRIGHTED MATERIAL

COPYRIGHTED MATERIAL Introduction xxiii Chapter 1: Apache Tomcat 1 Humble Beginnings: The Apache Project 2 The Apache Software Foundation 3 Tomcat 3 Distributing Tomcat: The Apache License 4 Comparison with Other Licenses

More information

Microsoft vision for a new era

Microsoft vision for a new era Microsoft vision for a new era United platform for the modern service provider MICROSOFT AZURE CUSTOMER DATACENTER CONSISTENT PLATFORM SERVICE PROVIDER Enterprise-grade Global reach, scale, and security

More information

Document Sub Title. Yotpo. Technical Overview 07/18/ Yotpo

Document Sub Title. Yotpo. Technical Overview 07/18/ Yotpo Document Sub Title Yotpo Technical Overview 07/18/2016 2015 Yotpo Contents Introduction... 3 Yotpo Architecture... 4 Yotpo Back Office (or B2B)... 4 Yotpo On-Site Presence... 4 Technologies... 5 Real-Time

More information

vcenter Server Installation and Setup Update 1 Modified on 30 OCT 2018 VMware vsphere 6.7 vcenter Server 6.7

vcenter Server Installation and Setup Update 1 Modified on 30 OCT 2018 VMware vsphere 6.7 vcenter Server 6.7 vcenter Server Installation and Setup Update 1 Modified on 30 OCT 2018 VMware vsphere 6.7 vcenter Server 6.7 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/

More information

MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M

MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M COURSE OBJECTIVES Enable participants to develop a complete web application from the scratch that includes

More information

MarkLogic Server. Security Guide. MarkLogic 9 May, Copyright 2017 MarkLogic Corporation. All rights reserved.

MarkLogic Server. Security Guide. MarkLogic 9 May, Copyright 2017 MarkLogic Corporation. All rights reserved. Security Guide 1 MarkLogic 9 May, 2017 Last Revised: 9.0-3, September, 2017 Copyright 2017 MarkLogic Corporation. All rights reserved. Table of Contents Table of Contents Security Guide 1.0 Introduction

More information

Gladinet Cloud Enterprise

Gladinet Cloud Enterprise GLADINET, INC Gladinet Cloud Enterprise Multi-Zone Deployment Guide Gladinet, Inc. 4/5/2015 This document discusses the technologies behind Gladinet Cloud Enterprise Copyright 2015 Gladinet, Inc. Table

More information

DESIGN AND IMPLEMENTATION OF SAGE DISPLAY CONTROLLER PROJECT

DESIGN AND IMPLEMENTATION OF SAGE DISPLAY CONTROLLER PROJECT DESIGN AND IMPLEMENTATION OF SAGE DISPLAY CONTROLLER BY Javid M. Alimohideen Meerasa M.S., University of Illinois at Chicago, 2003 PROJECT Submitted as partial fulfillment of the requirements for the degree

More information

DreamFactory Security Guide

DreamFactory Security Guide DreamFactory Security Guide This white paper is designed to provide security information about DreamFactory. The sections below discuss the inherently secure characteristics of the platform and the explicit

More information

CIB Session 12th NoSQL Databases Structures

CIB Session 12th NoSQL Databases Structures CIB Session 12th NoSQL Databases Structures By: Shahab Safaee & Morteza Zahedi Software Engineering PhD Email: safaee.shx@gmail.com, morteza.zahedi.a@gmail.com cibtrc.ir cibtrc cibtrc 2 Agenda What is

More information

"Charting the Course... MOC A Introduction to Web Development with Microsoft Visual Studio Course Summary

Charting the Course... MOC A Introduction to Web Development with Microsoft Visual Studio Course Summary Description Course Summary This course provides knowledge and skills on developing Web applications by using Microsoft Visual. Objectives At the end of this course, students will be Explore ASP.NET Web

More information

Qlik Sense Enterprise architecture and scalability

Qlik Sense Enterprise architecture and scalability White Paper Qlik Sense Enterprise architecture and scalability June, 2017 qlik.com Platform Qlik Sense is an analytics platform powered by an associative, in-memory analytics engine. Based on users selections,

More information

Course Content of MCSA ( Microsoft Certified Solutions Associate )

Course Content of MCSA ( Microsoft Certified Solutions Associate ) Course Content of MCSA 2012 - ( Microsoft Certified Solutions Associate ) Total Duration of MCSA : 45 Days Exam 70-410 - Installing and Configuring Windows Server 2012 (Course 20410A Duration : 40 hrs

More information

Randy Pagels Sr. Developer Technology Specialist DX US Team AZURE PRIMED

Randy Pagels Sr. Developer Technology Specialist DX US Team AZURE PRIMED Randy Pagels Sr. Developer Technology Specialist DX US Team rpagels@microsoft.com AZURE PRIMED 2016.04.11 Interactive Data Analytics Discover the root cause of any app performance behavior almost instantaneously

More information

RESTFUL WEB SERVICES - INTERVIEW QUESTIONS

RESTFUL WEB SERVICES - INTERVIEW QUESTIONS RESTFUL WEB SERVICES - INTERVIEW QUESTIONS http://www.tutorialspoint.com/restful/restful_interview_questions.htm Copyright tutorialspoint.com Dear readers, these RESTful Web services Interview Questions

More information

Application Design and Development: October 30

Application Design and Development: October 30 M149: Database Systems Winter 2018 Lecturer: Panagiotis Liakos Application Design and Development: October 30 1 Applications Programs and User Interfaces very few people use a query language to interact

More information

Introduction to RESTful Web Services. Presented by Steve Ives

Introduction to RESTful Web Services. Presented by Steve Ives 1 Introduction to RESTful Web Services Presented by Steve Ives Introduction to RESTful Web Services What are web services? How are web services implemented? Why are web services used? Categories of web

More information

AirLift Configuration. VMware Workspace ONE UEM 1902 VMware Workspace ONE AirLift 1.1

AirLift Configuration. VMware Workspace ONE UEM 1902 VMware Workspace ONE AirLift 1.1 VMware Workspace ONE UEM 1902 VMware Workspace ONE AirLift 1.1 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments about this

More information

BeBanjo Infrastructure and Security Overview

BeBanjo Infrastructure and Security Overview BeBanjo Infrastructure and Security Overview Can you trust Software-as-a-Service (SaaS) to run your business? Is your data safe in the cloud? At BeBanjo, we firmly believe that SaaS delivers great benefits

More information

Intro to Couchbase Server for ColdFusion - Clustered NoSQL and Caching at its Finest

Intro to Couchbase Server for ColdFusion - Clustered NoSQL and Caching at its Finest Tweet Intro to Couchbase Server for ColdFusion - Clustered NoSQL and Caching at its Finest Brad Wood Jul 26, 2013 Today we are starting a new blogging series on how to leverage Couchbase NoSQL from ColdFusion

More information

Azure Certification BootCamp for Exam (Developer)

Azure Certification BootCamp for Exam (Developer) Azure Certification BootCamp for Exam 70-532 (Developer) Course Duration: 5 Days Course Authored by CloudThat Description Microsoft Azure is a cloud computing platform and infrastructure created for building,

More information

Open Source Library Developer & IT Pro

Open Source Library Developer & IT Pro Open Source Library Developer & IT Pro Databases LEV 5 00:00:00 NoSQL/MongoDB: Buildout to Going Live INT 5 02:15:11 NoSQL/MongoDB: Implementation of AngularJS INT 2 00:59:55 NoSQL: What is NoSQL INT 4

More information

SharePoint 2013 Central Administration

SharePoint 2013 Central Administration Course Objectives SharePoint 2013 Central Administration SharePoint Virtual environment creation through VMware, Virtual Box & Hyper-V. SharePoint Farm setup - Standalone, Small, Medium and Large Scale

More information

04 Webservices. Web APIs REST Coulouris. Roy Fielding, Aphrodite, chp.9. Chp 5/6

04 Webservices. Web APIs REST Coulouris. Roy Fielding, Aphrodite, chp.9. Chp 5/6 04 Webservices Web APIs REST Coulouris chp.9 Roy Fielding, 2000 Chp 5/6 Aphrodite, 2002 http://www.xml.com/pub/a/2004/12/01/restful-web.html http://www.restapitutorial.com Webservice "A Web service is

More information

Study Guide. MarkLogic Professional Certification. Taking a Written Exam. General Preparation. Developer Written Exam Guide

Study Guide. MarkLogic Professional Certification. Taking a Written Exam. General Preparation. Developer Written Exam Guide Study Guide MarkLogic Professional Certification Taking a Written Exam General Preparation Developer Written Exam Guide Administrator Written Exam Guide Example Written Exam Questions Hands-On Exam Overview

More information

POWER BI BOOTCAMP. COURSE INCLUDES: 4-days of instructor led discussion, Hands-on Office labs and ebook.

POWER BI BOOTCAMP. COURSE INCLUDES: 4-days of instructor led discussion, Hands-on Office labs and ebook. Course Code : AUDIENCE : FORMAT: LENGTH: POWER BI BOOTCAMP O365-412-PBID (CP PBD365) Professional Developers Instructor-led training with hands-on labs 4 Days COURSE INCLUDES: 4-days of instructor led

More information

SQL Commands & Mongo DB New Syllabus

SQL Commands & Mongo DB New Syllabus Chapter 15 : Computer Science Class XI ( As per CBSE Board) SQL Commands & Mongo DB New Syllabus 2018-19 SQL SQL is an acronym of Structured Query Language.It is a standard language developed and used

More information

Extra Notes - Data Stores & APIs - using MongoDB and native driver

Extra Notes - Data Stores & APIs - using MongoDB and native driver Extra Notes - Data Stores & APIs - using MongoDB and native driver Dr Nick Hayward Contents intro install MongoDB running MongoDB using MongoDB Robo 3T basic intro to NoSQL connect to MongoDB from Node.js

More information

Chapter 2 WEBLOGIC SERVER DOMAINS. SYS-ED/ Computer Education Techniques, Inc.

Chapter 2 WEBLOGIC SERVER DOMAINS. SYS-ED/ Computer Education Techniques, Inc. Chapter 2 WEBLOGIC SERVER DOMAINS SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: Domain - concept and implementation. Content of a domain. Common domain types. Production versus

More information

Isomorphic Kotlin. Troy

Isomorphic Kotlin. Troy Isomorphic Kotlin Troy Miles @therockncoder Troy Miles @therockncoder Troy Miles, aka the Rockncoder, began writing computer games in assembly language for early computers like the Apple II, Commodore

More information

This section of the release notes is reserved for notable changes and new features since the prior version.

This section of the release notes is reserved for notable changes and new features since the prior version. Release Notes Browsium Proton 4.0 Product Version: 4.0.0 Release Notes Updated: 9 August 2016 About this Release This document lists new features and known issues as of the release date. If you discover

More information

How to Scale MongoDB. Apr

How to Scale MongoDB. Apr How to Scale MongoDB Apr-24-2018 About me Location: Skopje, Republic of Macedonia Education: MSc, Software Engineering Experience: Lead Database Consultant (since 2016) Database Consultant (2012-2016)

More information

IJSRD - International Journal for Scientific Research & Development Vol. 3, Issue 02, 2015 ISSN (online):

IJSRD - International Journal for Scientific Research & Development Vol. 3, Issue 02, 2015 ISSN (online): IJSRD - International Journal for Scientific Research & Development Vol. 3, Issue 02, 2015 ISSN (online): 2321-0613 Intelligent Script Editor: An Interactive Parallel Programming Tool Susmita Abhang 1

More information

Gladinet Cloud Enterprise

Gladinet Cloud Enterprise GLADINET, INC Gladinet Cloud Enterprise Technical White Paper Gladinet, Inc. 1/20/2013 This document discusses the technologies behind Gladinet Cloud Enterprise Copyright 2013 Gladinet, Inc. Table of Contents

More information

ReST 2000 Roy Fielding W3C

ReST 2000 Roy Fielding W3C Outline What is ReST? Constraints in ReST REST Architecture Components Features of ReST applications Example of requests in REST & SOAP Complex REST request REST Server response Real REST examples REST

More information

SQL Server on Linux and Containers

SQL Server on Linux and Containers http://aka.ms/bobwardms https://github.com/microsoft/sqllinuxlabs SQL Server on Linux and Containers A Brave New World Speaker Name Principal Architect Microsoft bobward@microsoft.com @bobwardms linkedin.com/in/bobwardms

More information

ElasticSearch in Production

ElasticSearch in Production ElasticSearch in Production lessons learned Anne Veling, ApacheCon EU, November 6, 2012 agenda! Introduction! ElasticSearch! Udini! Upcoming Tool! Lessons Learned introduction! Anne Veling, @anneveling!

More information

Example Azure Implementation for Government Agencies. Indirect tax-filing system. By Alok Jain Azure Customer Advisory Team (AzureCAT)

Example Azure Implementation for Government Agencies. Indirect tax-filing system. By Alok Jain Azure Customer Advisory Team (AzureCAT) Example Azure Implementation for Government Agencies Indirect tax-filing system By Alok Jain Azure Customer Advisory Team (AzureCAT) June 2018 Example Azure Implementation for Government Agencies Contents

More information

Exploring the Nuxeo REST API

Exploring the Nuxeo REST API Exploring the Nuxeo REST API Enabling Rapid Content Application Craftsmanship Copyright 2018 Nuxeo. All rights reserved. Copyright 2017 Nuxeo. All rights reserved. Chapter 1 The Nuxeo REST API What do

More information

Contents. Microsoft is a registered trademark of Microsoft Corporation. TRAVERSE is a registered trademark of Open Systems Holdings Corp.

Contents. Microsoft is a registered trademark of Microsoft Corporation. TRAVERSE is a registered trademark of Open Systems Holdings Corp. TPLWPT Contents Summary... 1 General Information... 1 Technology... 2 Server Technology... 2 Business Layer... 4 Client Technology... 4 Structure... 4 Ultra-Thin Client Considerations... 7 Internet and

More information

PHP Composer 9 Benefits of Using a Binary Repository Manager

PHP Composer 9 Benefits of Using a Binary Repository Manager PHP Composer 9 Benefits of Using a Binary Repository Manager White Paper Copyright 2017 JFrog Ltd. March 2017 www.jfrog.com Executive Summary PHP development has become one of the most popular platforms

More information

BlueCielo Meridian Enterprise Server Quick start for application administrators

BlueCielo Meridian Enterprise Server Quick start for application administrators BlueCielo Meridian Enterprise Server 2013 Quick start for application administrators BlueCielo Meridian Enterprise Server 2013 Introduction BlueCielo Publisher and Meridian Explorer have been integrated

More information

Sterling Survey System

Sterling Survey System Sterling Survey System Designing the Server, Database, and Administrative Tools in Support of a Multi-Mode, Multi-Platform Survey Authoring Framework Chris Schlapper University of Wisconsin Survey Center

More information

vsphere Installation and Setup Update 2 Modified on 10 JULY 2018 VMware vsphere 6.5 VMware ESXi 6.5 vcenter Server 6.5

vsphere Installation and Setup Update 2 Modified on 10 JULY 2018 VMware vsphere 6.5 VMware ESXi 6.5 vcenter Server 6.5 vsphere Installation and Setup Update 2 Modified on 10 JULY 2018 VMware vsphere 6.5 VMware ESXi 6.5 vcenter Server 6.5 You can find the most up-to-date technical documentation on the VMware website at:

More information

System Specification

System Specification NetBrain Integrated Edition 7.0 System Specification Version 7.0b1 Last Updated 2017-11-07 Copyright 2004-2017 NetBrain Technologies, Inc. All rights reserved. Introduction NetBrain Integrated Edition

More information

MongoDB Essentials - Level 2. Description. Course Duration: 2 Days. Course Authored by CloudThat

MongoDB Essentials - Level 2. Description. Course Duration: 2 Days. Course Authored by CloudThat MongoDB Essentials - Level 2 Course Duration: 2 Days Course Authored by CloudThat Description MongoDB Essentials aims at equipping the attendees with essential knowledge and working experience to set up

More information

<Insert Picture Here> MySQL Web Reference Architectures Building Massively Scalable Web Infrastructure

<Insert Picture Here> MySQL Web Reference Architectures Building Massively Scalable Web Infrastructure MySQL Web Reference Architectures Building Massively Scalable Web Infrastructure Mario Beck (mario.beck@oracle.com) Principal Sales Consultant MySQL Session Agenda Requirements for

More information