924
Lectures Watched
Since January 1, 2014
Hundreds of free, self-paced university courses available:
my recommendations here
Peruse my collection of 275
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:
V8, discontinued, bytecode, out, Java, Konqueror, node, Blink, shell, tables, Chromium, hierarchical, unrecognizable, machine, relational, joins, schema, REST, functionality, JSON, challenging, WebKit
•
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:

######################### (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:

persistant ⇒ persistent
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