Graph Databases and Web Frameworks (NodeJS, AngularJS, GridFS, OpenLink Virtuoso)
Databases and NodeJS
-
Upload
riza-fahmi -
Category
Technology
-
view
222 -
download
1
Transcript of Databases and NodeJS
DATABASESNODEJS
BEFORE WE BEGIN
Logistics
Slides: slideshare.net/rizafahmi
Subscribe: youtube, facebook live
Feedback:* https://www.youtube.com/c/hacktiv8
* https://www.facebook.com/hacktiv8id
AGENDA
✅ What is database
✅ Types of database
✅ Common data types
✅ Database operations
✅ Object Relational Mapping
✅ Build something with database
WAYS TO STORE AND RETRIEVE DATA
Store data in global variable[{ "id": 1, "image": "/img/1-jlol_sp_ed_bb-8_sphero_force_band.jpg", "description": "The Force is strong with you. Channel it with the Special Edition Battle-Worn BB-8 and included Star Wars Force Band by Sphero. Like a Jedi Knight, you can control your BB-8 App-Enabled Droid with just a wave of your hand and expand your abilities with Force Training." }, { "id": 2, "image": "/img/ilhi_3d_sw_kylo_ren.gif", "description": "The Dark Side is a very turbulent place. Sure they have cookies, but there are nooks and crannies in which darkness reigns so supreme, if you merely enter, you're likely to stub your toe." }]
WAYS TO STORE AND RETRIEVE DATA
Store data in global variable
PROS CONS
SUPER FAST
EASY
RESIDES IN MEMORY
LOSE DATA WHEN RESTART
WAYS TO STORE AND RETRIEVE DATA
Store data in a file
const fs = require('fs')
app.post('/users', function (req, res) { const user = req.body fs.appendFile('users.txt', JSON.stringify({ name: user.name, age: user.age }), (err) => { res.send('successfully registered') }) })
WAYS TO STORE AND RETRIEVE DATA
Store data in a file
PROS CONS
RESIDES IN STORAGEINFLEXIBLE ONE USER AT A
TIME
CHEAPER
DISTRIBUTION PROBLEM
WHAT IS DATABASE
“A WAY TO STORE AND RETRIEVE DATA”
WHAT IS DATABASE
Database Types
RELATIONAL DATABASE NON RELATIONAL DATABASE
SQL NOSQL
WHAT IS DATABASE
Relational Database / SQL
Store in tables with rows and columns
We define a schema
WHAT IS DATABASE
Examples
WHAT IS DATABASE
Non Relational Database / NoSQL
No schema
Free Form Database
WHAT IS DATABASE
Key-value store
Graph databases
WHAT IS DATABASE
Column databases
Document databases
RELATIONAL DATABASE
DATA TYPES
Integer
Real
Text
Blob
2
71839
-38.2822
48
45e18
Hacktiv8
c
1
DATA TYPES
PostgreSQL Data Types
DATABASE OPERATIONSStructured Query Language
Data Definition Language
Data Manipulation Language
RELATIONAL DATABASE
Data Definition Language
/* Define a table schema */ CREATE TABLE items( id INTEGER PRIMARY KEY AUTOINCREMENT, image VARCHAR(100), description TEXT);
/* Change a table schema */ ALTER TABLE items ADD qty INTEGER; ALTER TABLE items RENAME TO barang;
/* Delete a table */ DROP TABLE users;
RELATIONAL DATABASE
Data Manipulation Language /* Insert a data */ INSERT INTO items (id, image, description) VALUES (1, "/img/1-jlol_sp_ed_bb- 8_sphero_force_band.jpg", "New item for today.");
/* Read data */ SELECT * FROM items;
/* Change data */ UPDATE items SET description=“Hacktivcash items”
/* Remove data */ DELETE FROM items WHERE id=1; CR
UD
DATABASE OPERATIONS
NODEJS
Data Definition Language
const sqlite3 = require('sqlite3').verbose() const db = new sqlite3.Database('./data/try.db')
const CREATE_TABLE = `CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR(100), password TEXT);` const ALTER_TABLE = `ALTER TABLE users ADD dateCreated DATE;` const DROP_TABLE = `DROP TABLE users;`
db.serialize(() => { db.run(CREATE_TABLE) db.run(ALTER_TABLE) db.run(DROP_TABLE) })
db.close()
NODEJS
Data Manipulation Language
const sqlite3 = require('sqlite3').verbose() const db = new sqlite3.Database(‘./data/try.db')
const CREATE_TABLE = `CREATE TABLE IF NOT EXISTS items(id INTEGER PRIMARY KEY AUTOINCREMENT, image VARCHAR(100), description TEXT);` const DROP_TABLE = `DROP TABLE IF EXISTS items;` const INSERT_ITEM = `INSERT INTO items (id, image, description) VALUES (1, "/img/1- jlol_sp_ed_bb-8_sphero_force_band.jpg", "abc");` const SELECT_ITEM = `SELECT * FROM items;` const UPDATE_ITEM = `UPDATE items SET description='HACKTIVCAST new items'` const DELETE_ITEM = `DELETE FROM items WHERE id=1;`
NODEJS
Data Manipulation Languagedb.serialize(() => { db.run(DROP_TABLE) db.run(CREATE_TABLE) db.run(INSERT_ITEM)
db.each(SELECT_ITEM, (err, row) => { console.log(row.id, ': ', row.description) }) db.run(UPDATE_ITEM) db.each(SELECT_ITEM, (err, row) => { console.log(row.id, ': ', row.description) }) db.run(DELETE_ITEM) db.each(SELECT_ITEM, (err, row) => { console.log('After DELETE: ', row.id, ': ', row.description) }) })
db.close()
OBJECT-RELATIONAL MAPPING
“Technique that lets you query and manipulate data from a relational database using an object-oriented paradigm.”
Get Employee Addresses With SQL
SELECT name, city, street, state FROM Employee LEFT JOIN Address ON (Employee.address_id = Address.id)
Get Employee Addresses With ORM
employee.getDetailAddress()
ORM STANDARD FEATURES
MAPPING TABLES TO OBJECTS
CRUD Functionality
EXECUTING CUSTOM QUERIES
OTHER FEATURES
Seeding Data MigrationFlexibility
Data Validation Secure
LIBRARIES
ORM For NodeJS
SEQUELIZE
“SEQUELIZE IS A PROMISE-BASED ORM FOR NODE.JS V4 AND UP.”
“IT ENABLES JS DEVELOPERS TO WORK WITH RELATIONAL DATA MORE
EASILY.” -- ALEX BOOKER
SEQUELIZE
Benefits
Secure
Less Code Abstraction No SQL
Tools
SEQUELIZE
Limitations
Can be slow Extra Learning Curve
Documentation