Data Serialization and Storage
Web Programming Course
SUT • Fall 2018
Outline
-
Serialization
-
XML
-
JSON
-
...
-
-
Data Storage
-
Server side Storage
-
SQL
-
Serialization
XML
- XML is a markup language for encoding documents in a format that is both human-readable and machine-readable
- Is designed to transport and store data
- Emphasizes simplicity, generality, and usability over the Internet
- Has strong support via Unicode for the languages of the world
XML
- A simple XML example
<?xml version="1.0"?>
<message>
<from>Hassan</from>
<to>Hossein</to>
<body>Please give me a call!</body>
</message>
XML
-
Another example:
<?xml version="1.0"?>
<books>
<book>
<title>Maktub</title>
<author>Paulo Coelho</author>
</book>
<book>
<title>Never Crashed!</title>
<author>Microsoft</author>
</book>
</books>
XML versus HTML
-
XML and HTML are both markup languages
-
HTML is for displaying data, while XML is for
describing data
-
XML syntax differences
- New tags may be defined at will
- Tags may be nested to arbitrary depth
-
May contain an optional description of its grammar
JSON
- JSON stands for JavaScript Object Notation
- It is a lightweight text-data interchange
format, commonly used as an alternative to XML
-
JSON is smaller, faster and easier to parse
-
Although JSON uses JavaScript syntax, it is still language and platform independent.
JSON
{
"message": {
"from": "Hassan",
"to": "Hossein",
"body": "Please give me a call!"
}
}
{
"books": [
{
"title": "Maktub",
"author": "Paulo Coelho"
},
{
"title": "Crashed!",
"author": "Microsoft"
}
]
}
References
- W3Schools
-
Internet Programming by Pat Morin
-
Wikipedia
Data Storage
Introduction
- Any (web) application needs persistence storage
- There are three general storage strategies:
- server-side storage
- client-side storage
- a hybrid strategy
- Client-side data is stored locally within the user's browser
- A web page can only access data stored by itself
- For a long time, cookies were the only option to store data locally
- HTML5 introduced several new web storage options
- Session Storage
- Local Storage
-
Server-side data is usually stored within a file or a
database system
-
For large data, database systems are preferable
over plain files
-
Database Management Systems (DBMSs)
provide an efficient way to store and retrieve
data
Text
- A relational Database Written in C
- Compatible with SQL language
- Simple
- Zero dependency
- Zero configuration
$ sudo apt-get install sqlite
.
$ sqlite3 testDB.db
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
sqlite>.databases
seq name file
--- --------------- ----------------------
0 main /home/sqlite/testDB.db
Relational Databases
- Components:
- Database
- Table
- Row
- Columns
- Operations
- create/drop database/tables/index
- insert/update/delete table rows
- select a set of rows
Table Operation
sqlite> CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
sqlite>.tables
COMPANY
sqlite>.schema COMPANY
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
sqlite>.tables
COMPANY
sqlite>DROP TABLE COMPANY;
sqlite>.tables
sqlite>
Row Operation (Insert)
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
Row Operation (Delete)
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
sqlite> DELETE FROM COMPANY WHERE ID = 7;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
Row Operation (Update)
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
sqlite> UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 Texas 45000.0
7 James 24 Houston 10000.0
Row Operation (Select)
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
sqlite> SELECT AVG(SALARY) FROM COMPANY WHERE AGE >= 25
AVG
---------
46250
Title Text
Data Serialization and storage
By Behnam Hatami
Data Serialization and storage
Data serialization and storage / Web Programming Course @ SUT, Fall 2018
- 1,323