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

VIEW ARCHIVE


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, node, Java, V8, tables, Konqueror, Blink, REST, relational, unrecognizable, challenging, bytecode, Chromium, shell, JSON, functionality, hierarchical, WebKit, schema, joins, machine, out
what is MongoDB
non-relational
doesn't store in             
stores in          documents
key/value
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
schemaless
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
memcached
scalable and has good performance, but offers little                           
depth of functionality
Oracle
DB2
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?
no           
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?
indexes
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
Gecko
Firefox
KHTML
Konqueror
Trident
Internet Explorer
WebKit
Safari
Google Chrome (2013:                          using it)
Presto
Opera (2013: phased it out)
Blink
Chrome
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
Opera
July 2013: Opera switched to           
Opera 15+
Webview (Android)
as of 4.4
JavaScript engines
SpiderMonkey
1995: Brendan Eich, Netscape
C/C++
SpiderMonkey name has remained the same but modern engine is                              from 1995 engine
JIT compilers for SpiderMonkey
TraceMonkey
JägerMonkey
IonMonkey (current)
translates SpiderMonkey                  into a control flow graph
default engine in Firefox since version 18
Rhino
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
JavaScriptCore
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
V8
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"
Chakra
as of Internet Explorer 9
uses GPU for 3D graphics and video
MongoDB from 10,000 feet
clients
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

Vocabulary:

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."

People:

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:

persistantpersistent
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