Lectures Watched
Since January 1, 2014
1400+ courses starting
in February 2017
Peruse my collection of 259
influential people of the past.
View My Class Notes via:
Receive My Class Notes via E-Mail:


Contact Me via E-Mail:
edward [at] tanguay.info
Notes on video lecture:
MongoDB Introduction
Choose from these words to fill the blanks below:
discontinued, out, WebKit, Blink, Java, V8, tables, Konqueror, unrecognizable, Chromium, joins, node, shell, hierarchical, schema, REST, bytecode, JSON, challenging, machine, relational, functionality
what is MongoDB
doesn't store in             
stores in          documents
can also be key/array
and key/array(key/...)
MongoDB is a JSON document store
MongoDB data looks a lot more like the data you have in your programs than                      data does
two documents don't need to have the same              as two SQL rows do
where does MongoDB fit in the world?
two axis:
scalability and performance
scalable and has good performance, but offers little                           
depth of functionality
SQL Server
not known for being particularly scalable: easy to scale up but not easy to scale        (use commodity hardware)
MongoDB strikes the balance between these two
what is missing from MongoDB which classic RDBMS have?
each document is stored in a collection
the reason is: joins is one of the items which scales particularly poorly when you try to scale out
no transactions
sounds bad, but you often don't need them in applications which use MongoDB
because documents are                         s, you get some of this functionality
and it also is the case in real-world RDBMS scenarios that you do not have transactions between separate databases anyway
what is included in MongoDB which RDBMS have?
secondary indexes
although these are                        to get them to perform well on a system which is horizontally scalable
browser --> layout engine --> JavaScript engine
Firefox --> Gecko --> SpiderMonkey
Safari --> WebKit --> Nitro
Chrome --> WebKit -->     
2013: Chrome --> Blink --> V8
Opera --> Presto --> Carakan
2013: Opera --> Blink --> V8
Internet Explorer --> Trident --> Chakra
layout engines
Internet Explorer
Google Chrome (2013:                          using it)
Opera (2013: phased it out)
April 2013: Google forked from             
even before the split, Chrome never used WebKit in same way as Safari, e.g. Chrome ignored WebKit's JavaScriptCore and used V8 instead
July 2013: Opera switched to           
Opera 15+
Webview (Android)
as of 4.4
JavaScript engines
1995: Brendan Eich, Netscape
SpiderMonkey name has remained the same but modern engine is                              from 1995 engine
JIT compilers for SpiderMonkey
IonMonkey (current)
translates SpiderMonkey                  into a control flow graph
default engine in Firefox since version 18
1997: Netscape
developed entirely in         
separate from the SpiderMonkey
Apple Safari 4's Nitro
Google Chrome's V8 engine
converts JavaScript into classes
works in compiled and interpreted mode
intended for server-side applications
no built-in support for web browser objects
Apple forked KJS (                  ) to create JavaScriptCore for WebKit (layout engine)
2008 WebKit gets SquirrelFish
SquirrelFish Extreme, Nitro, Nitro Extreme, compiles JavaScript directly to machine code (like V8)
JavaScriptCore source code resides in the WebKit source tree
2008 with Chrome 2, in response to Nitro
compiles JavaScript to native                code
intended to be used both in a browsers, e.g. Chrome and                  (open source web browser project from which Google Chrome draws its source code, the browsers share the majority of code and features)
goal for Chrome is to be a "a tabbed window manager, or            for the web, as opposed to it being a traditional browser application"
as of Internet Explorer 9
uses GPU for 3D graphics and video
MongoDB from 10,000 feet
web browsers
any client sending requests, e.g. consuming          API
application server
running         .js
C++ program that you control using V8 JavaScript
all code for it are written in JavaScript
server responds to requests from clients
this application needs to store persistent data, that is where MongoDB comes in
MongoDB server
written in C++
application server acts as client and communicates with MongoDB server which is listening for requests
Mongo Shell
has similarities with node.js
C++ application that you control with V8
makes requests to MongoDB
looking at the data
debugging your application
the driver
handles all the connections, fail over
provides API which handles the communication to MongoDB


memcached, n. a general-purpose distributed memory caching system often used to speed up dynamic database-driven websites by caching data and objects in RAM to reduce the number of times an external data source (such as a database or API) must be read  "Memcached was originally developed by Danga Interactive for LiveJournal, but is now used by many other systems, including MocoSpace, YouTube, Reddit, Zynga, Facebook, Orange, Twitter, Tumblr, Wikipedia."
Self, n. an object-oriented programming language based on the concept of prototypes, a dialect of Smalltalk, latest version is 4.5.0 released in January 2014, the development of Self took place at Sun Microsystems  "Self is a prototype-based dynamic object-oriented programming language, environment, and virtual machine centered around the principles of simplicity, uniformity, concreteness, and liveness, it includes a programming language, a collection of objects defined in the Self language, and a programming environment built in Self for writing Self programs, the language and environment attempt to present objects to the programmer and user in as direct and physical a way as possible."
V8, n. an open source JavaScript engine developed by Google for the Google Chrome web browser  "V8 compiles JavaScript to native machine code before executing it, instead of more traditional techniques such as interpreting bytecode or compiling a whole program to machine code and then executing it from a filesystem."
WebKit, n. a layout engine software component for rendering web pages in web browsers, it powers Apple's Safari web browser and was previously used in Google's Chrome web browser  "As of September 2013 WebKit browser market share was larger than that of both the Trident engine used by Internet Explorer, and the Gecko engine used by Firefox, however, on April 3, 2013 Google announced that it had forked WebCore, a component of WebKit to be used in future versions of Google Chrome and Opera under the name Blink."


Lars Bak (1964-)
Danish computer programmer who currently works for Google where he has contributed to the Chrome browser by developing the V8 JavaScript engine
  • 1988 designed and implemented object-oriented virtual machines
  • at Sun, developed a programming environment for Self and added several enhancements to the virtual machine
  • at Sun, developed a high-performance Java virtual machine
  • in 2004, joined Google to work on the Chrome browser
  • with team of 12 engineers, Bak has coordinated the development of the V8 JavaScript interpreter for Chrome
  • co-developed the Dart programming language

Spelling Corrections:

MongoDB Introduction
Installing MongoDB/node.js and Hello Worlds
MongoDB, node.js, Express and SWIG
Basic Querying in MongoDB
More Querying in MongoDB
MongoDB CRUD via Node.js
Comparing RDBMS and MongoDB Schema Design