Trio Database System Management - School of Information ...

beefwittedvalentineΔιαχείριση Δεδομένων

29 Νοε 2012 (πριν από 4 χρόνια και 6 μήνες)

359 εμφανίσεις

Table of contents:


1.0

Understand Trio new database system
…………………..
.....
....................................................
..
..
1

Trio System Architecture..
......................................................
.................................................
.1

Uncertainty
-
Lineage Database (ULID)……
...............................
..................................................1

Trio: The Trio Query Language……..
........................................
..................................................2

2
.0
Syst
em requirements of installing Trio system
...................................................................
..
.
.
3

3
.0
S
ource code
s/packages for
Trio system
……………………………………….
...
....
..............................
...
3

4
.0
Procedure of
Trio system installation
..
......
.
.......................................................................
....
..
4

Python
……
.........................................................................
...................
...............................4

Readline….
...........................
.............................................
.............................................
.....4

Ctypes…….
.........................................................................
...................
...............................4

PostgreSQL……
.............
....................................................................
....................
...............4

Graphviz………
...................................................
.........................................
......................
...
.
5

Easy_install
........
...............................................................
.......................
...........................5

PyGreSQL..
........................................................................
...................
...............................5

Pylons…
……
.........................................................
............................................
................
....5

PLY……
.....................................................................................
.............
............................
...5

PyParsing
...........................................................................................
...........................
..
.....5

PyDot
...........................................................................................
...................
..............
...
...5

Trio API
............................................................................................
....
................................5

5
.0 Configuration of Trio System
.
…………………..............................................
..........
......
...............
.
.
6

Windows superuser authentication to access PostgreSQL
............................
.....................6

TrioExploerer…………………….
……………….
..............................................
.
...............................6

TrioPlus…………………….

…………..
.........................................................
...........
.....................6

6
.0
Experiment
Trio DBMS Using
TrioExplorer and TrioPlus
…………
.............................
.
......
.........
.
7

TrioExplorer (Home, Schema, Script, and Help)
......
........................................
...................7

TrioPlus
.........................................................
.......................................
...............................9

7
.0
Trio API Integrated Into Other Python Scripts.
........
.................................
..
......................
......
.
9

TrioCnx…………….
...
........
....................................................
..................................................9

TrioCursor………………….
..
..........................................
.........
..................................................9

XTuple…………………………………………………………………….
.....................................................
..
.
.9

Alternative…………………
........................................
...............................
..............
..................9

8
.0
Trio API and Translator (Python).
............................
.................................
.....................
.
......
.
10

9
.0
Trio Query Language (TriQL) S
tructure.
...
................
.................................
..
..........
............
.....
10

Current supported for TriQL.
............................................
................................................10

Drop index/table
...
........
....................................................
...................
...............
..............11

Create Trio table/index..
...................................................
...................
.............................11

TriQL

language (uncertainty, Compute confidences).
.....................................................
.12

Table

of
TriQL

content
s
........................................
...............................
..............................16

10
.0
Advantage and Disadvantage of using Trio DBMS .
........
..............................
............
.........
17

Advantage
....
.......
.............
....................................
...............................
..............................17

Disadvantage
....................
................
...................
...............................
..............................17

11
.0
Documen
ting
Trio
system report
/bugs

………
..............................................................
.......
18

12
.0
Written Components
………………………….
………
..............................................................
.........
18

Turn
-
in documents.
...........
............
....
...................
.......................................
......................18

Demo and presentation.
...
................
...................
...............................
..............................19

13
.0
Reference
s
……………
…..
…….
…………………………
.........
.....................................................
..........
19






Trio Database System Management

1


1.0
Understanding of Trio new Database System
:


Trio is a new kind of database system (DBMS), which was developed by Stanford University Lab at Dec,
2006. It is based on an extended rela
tional model called Uncertainty Lineage Database (ULDB)

[1]
, and
also supports Trio’s query language Called TriQL

[1]
. This new database system technology handles
structured data, uncertainty of data, and data lineage together in a fully integrated manner.

In order to
understand deeply and explicitly about this new
Trio DBMS

different than others, we are going to look at
its

architecture
/design
, ULDB data model
, and TriQL
.



1.1
Trio System architecture:


M. Mutsuzaki, M. Theobald
, etc

in [1] summarized
in details of Trio
-
1.0 system architecture, design, and
data structure handling. As seem in Fig 1
-
System architecture, there are
four

primary components
comprised

as Trio DBMS
, including command
-
line client (TrioPlus), TrioExplorer, Trio API and translator

(Python)
,

and standard relational DBMS (PostgreSQL).
Also s
tandard relational DBMS (PostgreSQL)
contained four essential elements


Encoded data table, Lineage table, Trio metadata, and Trio Stored
Procedures.
Clustering t
hese
four together becomes

Uncert
ain Lineage Database (
ULDB
) [1]

on
handling
uncertainty and lineage
data
during execution. Trio system is more efficient, flexible, and powerful than
regular DBMS because of its
goal as mentioned in [1]
“The Trio API accepts TriQL queries in addition to
re
gular SQL, and query results may be x
-
tuples in the ULDB model as well as regular tuples.”



(Fig 1) System architecture

[1]



1.2
Uncertainty
-
Lineage Database (ULDB)


ULDB, which called Uncertainty
-
Lineage Database, was mentioned in [2] as “the first

database formalism
to integrate uncertainty and lineage”.

The solution of handling uncertainty and lineage is a primary key
of developing Trio DBMS. What are uncertainty and lineage? As discovered by
O. Benjelloun, A. Das
Sarma

, etc in [2]
, the definitio
n of uncertainty is “…captured by tuples that may include several
alternative possible values, with optional confidence values associated with each alternative.” And
lineage is as “…associates with a data item information about its derivation.”
After clea
red out the
concepts of ULDB, the next step focuses on ULDB data model which extended the standard SQL
relational model into alternatives,
maybe

(‘?’) annotations, numerical confidence, and lineage

[2]
.
In the
following discussion and demo, I will use Driv
es (person, color, car) and Saw (witness, color, car)
uncertainty tables

with/no with confidence

as an example.

A table with blue color in TrioExplor is
uncertainty and orange color is with computing confidence.
The source code is listed in
Learning Trio
Q
uery Language (TriQL) structure

section.




1.2.1 Alternatives


In ULDB, it is consisted with x
-
tuple (x
-
relation). Each x
-
tuple can have one or more alternatives. As
defined in [2], a
lternatives are presenting uncertainty about the contents of a tup
le.
For example in Fig 3,

Trio Database System Management

2


persons called Frank and Jimmy are x
-
tuples which contains one or more alternatives by using
annotation ‘||’. By clicking on
the
‘||’,
x
-
tuple will be split into
two
alternatives for both Frank and

Jimmy in Fig 4.
Each alternative

is a regular tuple.
The reason of combining regular tuples
as

x
-
tuple is
because the
possible
instances have same values/relations in particular fields.


(Fig 2)

uncertainty tables

(Fig 3)

Drives table

(Fig 4)

Drives table




1.2.2 ‘?’ (Maybe)
Annotations


‘?’ annotation present the existence of a tuple on the x
-
tuple, also called maybe x
-
tuple [2]. For example
in Fig 3, there is a ‘?’ on the right side of Billy’s record. In specific by the definition, Billy may or may not
sure
what he saw is a
blue Honda. If x
-
tuple has a ‘?’, all of alternatives will have ‘?’.




1.2.3 Numerical Confidences


Numerical confidence also was considered as probability [2]. In Fig 5 is a confidence table. When we
view the tuples of
Drivers table, there is a

n
umber attached with
each
x
-
tuple indicated the confidence
as in Fig 6
;

Frank has 1.0, Johnny/Jimmy has 1.0, and Billy has 0.9. B
y looking at Fig 7, there is a

detailed
probability for

each tuple.
The total confidences of x
-
tuple can be less or equal to 1.0

[2]. In this example,
I inserted the data along with confidences into Drivers table. Optionally, TrioExplorer will compute the
confidences by probability if no confidence available.


(Fig 5) w/confidence tables

(Fig 6)

Drives table

(Fig 7)

Drives table




1.2.4 Lineage


Lineage, which as defined in [2], is “recorded at the granularity of tuple alternatives: Lineage connects as
x
-
tuple alternative to other x
-
tuple alternative.” Specifically, lineage is a

function which is used to derive
alternativ
es for a set of alternatives. For an example, when the SQL query ‘select person from Drives’
was executed
in TrioExplorer, the returned result
is
in Fig 8.
The blue arrow in the picture presents the
lineage. By clicking on it, we can see that Billy record
was derived from an entire Billy record. By
inserting this function in DBMS, the users can capture
derivation of SQL query for better understanding
of data relationship.


Trio Database System Management

3


(Fig 8) Drives table

(Fig 9) Drives table



1.3 TriQL
: The Trio Query Language


TriQL was developed specifically for querying Trio DBMS. It contains two major parts: built
-
in functions
and predicates for querying confidence values and lineage, and regular SQL syntax [2]. As mentioned in
[1], TriQL
,

which
used to query

over ULDBs
,

are
translated automatically to SQL qu
eries over the
encoded tables. Here I will not discuss about TriQL query language and
structure
, but will be covered in
Learning Trio Query Language (TriQL) structure

section

by using demo.





2.0
System Requirement of In
stalling Trio S
ystem


To
know the system requirement
before the installation is a very important step. It may the installation
of Trio system much easier and
compatible
. The requirement mainly concentrates on type of
operation
system,
version of
database s
erver

(PostgreSQL)
,

and
Python
. In [3], the web page describes the
operating system
s in which was experimented successfully with Trio System, such as Linux, Mac OS X,
and Win
-
32 (XP, Vista, and 32
-
bit Server).

In PostgreSQL as d
atabase server
which suppor
ted Trio
system function
has various versions available in
www.postgresql.com
,
including

8.2.5, 8.1.10, 8.0.14,
and 7.4.18

[4]
. As mentioned in postgreSQL website, it only supports Linux and Win32. Optimal copy for

Trio system is PostgreSQL 8.1.10. The last one is Python API.
It can run on windows, Linux/Unix, Mac OS
X, OS/2, and Amiga

[5]
. In the
Trio system installation

section
, I used Windows XP professional as one of
operating systems

to install Trio system
.



3.0
Source Code
s
/packages

for

Trio S
ystem


In
http://dbpubs.stanford.edu:8011/doku.php/trio:installation

page listed
12

packages for completing
the installation of Trio system. Each
package has its
own
website
which
contained differe
nt versions of
source codes

corresponding with installation instructions.
This section is to list
all the resources
for users
to make their lives easier and install properly.

(Please use listed versions of

packages)



3.1
Listing s
ource
codes:


1.

Python

2.4

can be downloaded from
http://www.python.org/

.

2.

Easy_install can be downloaded from
http://peak.tele
community.com/DevCenter/EasyInstall

and the file called ez_setup.py.

3.

Readline 1.7.win32 can be downloaded from
http://www.python.org/

.

4.

ctypes
-
1.0.2.win32
-
py2.4 can be download from
http://www.python.org/

.

5.

PostgreSQL

8.1

can be downloaded from
http://www.postgresql.org/

.

6.

Graphviz 2.14 is
the only version compatible with Trio API. It is
available in
http://infolab.stanford.edu/trio/code/graphviz
-
2.14.1.exe

.

7.

PyGreSQL

can be downloaded from
http://www.pygresql.org/

.

8.

Pylons
0.9.5
can be downloaded from
http://pylonshq.com/

.

9.

PLY
2.2
can be downloaded from
http://www.dabeaz.com/ply/

.


Trio Database System Management

4


10.

PyParsing can be downloaded from
http://pyparsing.wikispaces.com/

.

11.

PyDot can be
downloaded from
http://code.google.com/p/pydot/downloads/list

.

12.

Trio API
1.0
can be downloaded from
http://infolab.stanford.edu/
~theobald/sources/TRIO.zip

.




4.0 Procedure of
Trio system installation


Since Trio is deployed on top of the above packages,
following order below in
installing

them one by one
will be much easier. Some packages are depending among the others

packages.

For convenience, most
of the required Python modules (Pylons, PyGreSQL, etc.) can be installed via ''Easy Install''

for
Windows
platforms. Most of the procedures below were mainly from [3], but modified as needed.

4.1.

Python

o

Download Python 2.4 windows versio
n (
python
-
2.4.4.msi
)
.

o

Install Python in C:/Python directory

o

Set path=c:/Python24; in environment variables

4.2.

Readline

-

download
Readline
-
1.7.win32
-
py2.4.exe

and install into Python

directory

4.3.

Ctypes



download
ctypes
-
1.0.2.win32
-
py2.4.exe

and install into P
ython

directory

4.4.

PostgreSQL

o

Download PostgreSQL 8.1 windows version (
postgresql
-
8.1.msi
)

o

Install PostgreSQL 8.1 as following:



Language selection (Fig 1
0
)


English



Introduction screen

(Fig
11
)


next



Welcome message and instructions
(Fig 12
)


next



Feature

selection

(Fig 13
)


next



Service installation

(Fig 14
)


check install a service, input account name
‘postgres’ and password.



Initdb

(Fig 15
)


check initialize database cluster,
super username

and password.



Procedural languages

(Fig 16
)


Check PL/pgsql

only.



Contrib modules

(Fig 17
)


check Admin81 only.



Next in (Fig
18, 19, 20, 21
) to complete the installation.

o

Set path
C:
\
Program Files
\
PostgreSQL
\
8.1
\
bin;

after completed the installation.



(Fig 1
0
)

[4]


(Fig
11
)

[4]


(Fig 12
)

[4]


Trio Database System Management

5



(Fig 13
)

[4]


(Fig 14
)

[4]


(Fig 15
)

[4]


(Fig 16
)

[4]


(Fig 17
)

[4]


(Fig 18
)

[4]


(Fig 19
)

[4]


(Fig 20
)

[4]


(Fig 21
)

[4]

4.5.

Graphviz

-

Download Graphviz 2.14 version and install to your workstation and set path
C:
\
PROGRA~1
\
ATT
\
Graphviz
\
bin
;
in environment va
riables after completed the installation

4.6.

Easy_install

-

Download ez_setup.py in C:/ directory

4.7.

PyGreSQL



In command line, cd
\

to c: directory, and run python ez_setup.py PyGreSQL to
install components.

4.8.

Pylons



In command line, cd
\

to c: directory, and run

python ez_setup.py Pylons==0.9.5 to
install Pylons. Set path c:
\
python24
\
Scripts in environment variables.

4.9.

PLY



In command line, cd
\

to c: directory, and run python ez_setup.py Ply==2.2 or easy_install
Ply==2.2.

4.10.

PyParsing



In command line, cd
\

to c: dir
ectory, and run python ez_setup.py PyParsing.

4.11.

PyDot



d
ownload the source from website. Access to folder in command line, and then install

manually by running ‘python setup.py install’.

4.12.

Trio API

o


Download source code in any directory

o

Copy
Trio
-
1.0
\
spi
\
tri
ospi_win32.dll to PostgreSQL’s lib directory and renamed as
triospi.dll


Trio Database System Management

6



5.0 Configuration of

Trio System

5.1.

Windows superuser authentication to access PostgreSQL

o

Double click in start
-
>all programs
-
>PostgreSQL 8.1
-
>pgadmin III

o

Right click on Login Roles to c
reate new login role

(see in Fig 22)



Role name ‘myname’ (as same as windows login account)



Set password (Password can be any)



Check all role privileges and click ok.

o

Right click on Database to create new database

(see in Fig 23)



Database name ‘myname’ (as
same as username)



Owner is ‘myname’ and click ok

o

Initialize Trio schema information
(see in Fig 24)



In Trio
-
1.0
\
setup, open setup.py with notepad to comment out the last three
codes and put the following. (After complete the initia
lization, please change
b
ack to original
).


os.system("psql %s %s < setup.sql" % (pgdbname, username))

os.system("psql %s %s < setup_triospi.sql" % (pgdbname, username))

os.system("psql %s %s < trio_get_conf.sql" % (pgdbname, username))



Save the file, and
at the command line,
c
d
\
Trio
-
1.0
\
setup, and run ‘
python
setup
.py

myname myname’ in command line.



Pro
vide password to create schema and d
one.


(Fig 22)

(Fig 23)

(Fig 24)


5.2.

TrioExplorer

[3]

o

Make sure PostgreSQL is working
.

o

Running TrioExplore
r



Ensure path ‘c:
\
python24
\
Scrip
ts;’ in environment variables. And
double click ‘start_te_server.bat’ under
Trio
-
1.0
\
explorer
.

o

At the command line, you are now prompted for an admin user login to PostgreSQL,
which should have been created along with your PostgreSQL installation and whic
h will
be used by TrioExplorer to create new user roles and database instances.

o

TrioExplorer should now be reachable from your browser using
http://localhost:8080/
.
For new users can now press ‘Create a new user’ and cr
eate their own Trio login and
database instances, which are then managed by the PostgreSQL server.



Trio Database System Management

7


5.3.

TrioPlus

[3]


Trioplus is to use to prepare for a new user role and database instances be
installed manually which should be different from the default Pos
tgreSQL instance, and which
requires logging in onto the PostgreSQL server with admin privileges.

o

Create new PostgreSQL user role and
database instance



Run ‘createuser demo’



Run ‘createdb demo’, the name must be the same as username

o

Initialize Trio schema
information for new user by access
as same as windows superuser
authentication to access PostgreSQL. Use TrioExplorer will be easily just press ‘Create
new role’ in Web.

o

Connect to new Trio database using the command line clients by running ‘python
trioplu
s.py

u demo

d demo

p’




6.0 Experiment Trio DBMS
U
sing

TrioExplorer A
nd TrioPlus



(Fig 25
)

6.1
TrioExplorer:


Fig 25

described the interface of
TrioExploer in home tab

after login in
using login username and password
. On
the left side of the
web
page

listed all
symbols which used to show
the types
of
tables/records. In the body of the
page, a text
-
field
area
uses to execute
TriQL
. After press ‘execute’, the
information will show up under

with
correct result
.

(Fig 26
)

Fig 26

is the schema tab in Trio
Explorer.
After created the tables of database, the
diagram
described the r
elation
s of
tables
, type of table
s
, and attributes.

On
the left side also listed the symbols and
meanings of the diagram.


Trio Database System Management

8


(Fig 27
)

Fig 27

is a sample tab. It uses to load the
samp
le
script
which was provided by the
application

for testing purpose
. After
load the sample
script
data, the
application will automatically execute
the queries

in DBMS
. Also a copy of
sample script will list on the body of the
page.

(Fig 28
)

Fig 28

is a s
cript tab
in TrioExplorer
which uses to load a scrip
t

from
a file in
your
workstation to the application

to
be executed
. After loaded
successfully
,
you can click on the script to put a
single
line of script to the text
-
field to
be
execute
d in DBMS
.

(Fig
29
)

Fig 29

is a help
tab
which help
s

users for
common problem
s such as how to use
all tabs
,
how

to create database
, and
more.


Trio Database System Management

9


(
Fig 30
)

6.2 TrioPlus


As seem in Fig 30
, by accessing to Trio
-
1.0/ directory at the command line,
just
type ‘python trioplus.py


uXn慭攠


mXname

p’ to connect to Postgres
獥牶敲⸠
Pl敡獥⁡ 慲攠瑨慴 mXname
慣捯un琠Ua猠so⁢ ⁣牥r瑥T⁩n⁔物漠MBM匠
晩f獴⸠䅦瑥s⁥獴慢s楳i敤⁴桥 捯nn散eion
睩瑨⁰ws瑧牥WQL
ⰠXou 捡c⁥硥捵瑥⁡湹
呲楑T

query statement in ‘>’ as same as
楮⁴U攠W數W
-
晩敬f
映呲楯䕸灬o牥爮




7.0 Trio API Integrated Into O
ther Python Scripts


Trio API contains many methods in
the classes
Triodb.py and xtyple.py under Trio
-
1.0 directory for
integrating into other Python scripts. By importing both
classes
to Python scripts,
it

provides additional
capability to handle tuple alternatives, computation of confidence, and lineage. As seem closely in the
classes, the Trio API methods were

designed to work very

similar as Python DB
-
API interface [3].
There
are several Trio API methods

described detailed below was from [3]
.


7.1 TrioCnx

7.1.1.

TrioCnx(pgdb)


This constructor method creates a new Trio connection from a given

PyGreSQL connection pgdb, the default Python DB
-
API.

7.1.2.

cursor()


return a new TrioCursor object for the current connecti
on.

7.1.3.

commint()


commits the current transaction.

7.1.4.

rollback()


performs a rollback for the current transaction.

7.1.5.

close()


closes the Trio connection (and the underlying pgdb connection)


7.2 TrioCursor

7.2.1.

execute(triql)

-

Executes a TriQL statement
triql

for t
his cursor object.

7.2.2.

fetchone()

-

Fetches a single XTuple object from the current cursor position.

7.2.3.

fetchall()

-

Fetches and returns a list of all XTuple objects beginning from the current cursor

position.


7.3 XTuple

7.3.1.

len()

-

Returns the number of Alterna
tive objects contained in this XTuple object.

7.3.2.

getAlternative(idx)

-

Returns the Alternative object at the designated index
idx
.

7.3.3.

getConfidence()

-

Returns the confidence value (if any) of this XTuple object as the sum of its
Alternative objects' confidenc
e values.

7.3.4.

getQuestionMark()

-

Returns whether this XTuple object has a question mark or not.


7.4 Alternative

7.4.1

getLineage()



returns a list of immediate lineage information as (source
-
table, source
-
aid)
pairs of this alternative.

7.4.2

traceLineage()



perform
s a transitive lineage traversal for this alternative back to the base
data

7.4.3

getConfidence()

-

Returns the confidence value (if any) of this alternative.


Trio Database System Management

10


7.4.4

computeConfidence()

-

Computes the confidence value of this alternative based on the
traceLineage()

fu
nction.




8.0
Trio API And T
ranslator (Python)


Trio API and translator (Python) is one of important components in Trio system. Every
Trio
query
language

(TriQL)
, entered from
either TrioExplorer or TrioPlus

by users, will be translated into e
ncoded
data

table, Lineage table, Trio metadata, and/or Trio Stored Procedures of ULDB, and be executed
in
relational database. Node.py in Trio
-
1.0 directory and lexer.py in
Trio
-
1.0
\
trioparser

directory contain
classes, methods, TriQL keywords initiation for support
ing and validating TriQL queries through Trio API.




TriQL built
-
in functions


TriQL keywords


Aggregate(
),
Alternative(
),
As(
),
Avg(
),
BinaryExpression(
),
Brackets(
),
Cascade(
),
ColumnList(
),
Column(
),
Command(
),
ComputeConfidences(
),
Conf(
),
ConfUnifo
rm(
),


ConfScaled(
),
Count(
),
CreateIndex(
),


CreateTableAs(
),
CreateTable(
),
CreateTempTableAs(
),
CreateTempTable(
),
DataType(
),
Dot(
),
DropIndex(
),
DropTableList(
),

DropTable(
),
Eavg(
),
Ecount(
),
EcountStar(
),
Emax(
),

Emin(
),
Empty(
),
Esum(
),
FromCla
use(
),
GroupAlts(
),
GroupbyClause(
),
GroupByKey(
),

HavingClause(
),
HorizontalSelect(
),
IdentifierList(
),

InsertList(
),
Insert(
),
InsertSpec(
),
Lineage(
),
Literal(
),
Lsum(
),
Max(
),
Maybe(
),
Maybe(
),
Min(
),

OrderBy(
),
Question(
),
SelectClause(
),
Select(
),


SelectOptions(
),
SetOperator(
),
Star(
),
Sum(
),

UnaryExpression(
),
UncertainSet(
),
UniformTable(
),

ViewTable(
),
WhereClause(
),
WithConfidences()

'all', 'and', 'any', 'as', 'avg', 'by', 'cascade',
‘compute', 'conf', 'confidences', 'count', 'create',

GT楳瑩i捴✬‧c牯pGⰠ❥,vgGⰠ❥,oun琧Ⱐ❥m慸✬‧em楮GⰠ,†
'esum', 'except', 'exists', ‘flatten', 'float', ‘float4',
G晬f慴aGⰠ❦,omGⰠ❧牯upGⰠ❧牯up慬瑳aⰠ❨慶楮gG,

G楮GⰠ❩nT數GⰠ❩n獥牴GⰠ,G楮琧Ⱐ‧Wn琴GⰠ❩n琸GⰠ❩nW敲獥c琧Ⱐ†
G楮瑯GⰠ❩猧Ⱐ❬楫i
GⰠ❬楮敡e攧Ⱐ⌧污癧lⰠ,G汣oun琧Ⱐ⌧Wm慸✬††
⌧#m楮GⰠ,G汳lmGⰠ❭a砧Ⱐxm慹b攧Ⱐ❭楮eⰠ❮ocon昧Ⱐ
Gno汩n敡来eⰠ❮omaXb攧Ⱐ❮o琧Ⱐ❮u汬GⰠ❯nGⰠ❯爧Ⱐ
Go牤敲✬‧獣慬敤sⰠ❳捡汥摢Xe硰xⰠ❳敬散,G,‧獵mGⰠ
G瑡扬攧Ⱐ❴empo牡rXGⰠ❴物oGⰠ❴物潟慩aGⰠ❴物o彸楤GⰠ

n捥牴慩aGⰠ❵n楦i牭G,‧ n楯nGⰠ❭敲来eGⰠ,v慬a敳✬††
Gv慲捨慲aⰠ❶i敷GⰠ❷,敲攧Ⱐe睩瑨w




9
.0
Trio Query Language (
TriQL
)

S
tructure


As mentioned in [3], “Trio is based on the ULDB model, an extension to the relational model that adds
both uncertainty (
U) and lineage (L) as first
-
class concepts.” Therefore, Trio Query Lanaguage (TriQL) is
designed for querying and updating ULDB database

using
Encoded data table, Lineage table, Trio
metadata, and Trio Stored Procedures
.

Also discussed earily, ULDB is exte
nded over the standard SQL.
So TriQL contains
not only
built
-
in functions to handle uncertainty, query/compute confidence values,
derive data lineage,
but also
regular SQL queries.



9.1 Current s
upported
for
TriQL



Supported DDL and Insert Commands


Supp
orted Subset of TriQL Query Language



Create Table



Create Trio Table



Select
-
Project
-
Join queries



Create Table T as <query>


Trio Database System Management

11




Create Index



Drop Table
-


Including “Cascade” option to
T牯p⁤敲楶敤⁴慢e敳



Drop Index



Insert Into T Values <data>

o

With or without alternatives,
confidence values, and ?

o

T must be a base

table



Insert Into T <TriQL query>

o

T must be a base table




Select Distinct



Union, Intersect, or Except of two
subqueries (duplicate
-
eliminating)



Union All of two subqueries



Merged, Flatten, and GroupAlt
s



Horizontal subqueries in Where clause

o

Including shortcuts and
aggregation/group
-
by/having



Horizontal subqueries in Select clause

o

Including shortcuts and aggregation
but not group
-
by/having



Conf() function with any number of tables
or Conf(*)

o

except for
Conf(*) in the SELECT
clause in conjunction with DISTINCT
or MERGED



Maybe() predicate



“Uniform <table
-
name>” in From clause



“as conf” for query
-
T敦楮敤⁲ 獵s琠
捯n晩f敮捥⁶慬a敳

o

Including “Uniform as conf” and
“Scaled as conf”



“Compute Confidences” at end o
映煵敲X



Lineage() predicate

o

Not in horizontal subqueries

o

“=

” abbreviation allowed



NoLineage, NoConf, and NoMaybe




Based on the sample of
TriQL

in
http://infolab.stanford.edu/~widom/triql.html
, I created the
TriQL
tables
/indexes and

inserted the uncert
ainty
data

and confidences for demo
.


9
.2

Drop index/table



TriQL can use ‘drop index/table’ statemetn to delete the table as same as the
standard SQL statement over the DBMS.


drop index DRIVES_INDEX;

drop table Drives;

drop index SAW_INDEX;

drop t
able Saw;


9
.3

Create Trio table/index



To create TriQL table for uncertainty, the word ‘Trio’ must involve in the
create statement

create trio…


as below. Also a ‘uncertain()’ funciton in the same statement helps to
define which field inside the table
will be considerred as uncertainty.
If the tail of the statement has
‘with confidences’, it means the table can be insertted with confidences and compute confidences
during the query execution. ‘[…|…]’ means x
-
tuple. ‘?’ as mentioned above is alternative.
‘:number’ is
the confidence.


---------------------------------------------------------------------

--

Creating tables and indexes, inserting data

---------------------------------------------------------------------

create trio table Saw(witness varchar(
32), color varchar(32), car varchar(32), uncertain(color, car));

create index SAW_INDEX on Saw(color, car);


Trio Database System Management

12



insert into Saw values [('Amy','blue','Honda') | ('Amy','red','Toyota')] ?;

insert into Saw values [('Betty','green','Mazda') | ('Betty','green','T
oyota') | ('Betty','green',NULL)];

insert into Saw values ('Cathy','red','Acura') ?;

insert into Saw values [('Diane','red','Toyota') | ('Diane','blue','Toyota')];


create trio table Drives(person varchar(32), color varchar(32), car varchar(32), uncertain(
person, color,
car));

create index DRIVES_INDEX on Drives(person,color, car);

insert into Drives values [('Frank','red','Toyota') | ('Frank','blue','Toyota')];

insert into Drives values ('Billy','blue','Honda') ?;

insert into Drives values [('Jimmy','green
','Mazda') | ('Johnny','green','Mazda')];


---------------------------------------------------------------------------------------------------------------

-

With confidence value

-----------------------------------------------------------------------------
----------------------------------

create trio table Saw(witness varchar(32), color varchar(32), car varchar(32), uncertain(color, car)) with
confidences;

create index SAW_INDEX on Saw(color, car);


insert into Saw values [('Amy','blue','Honda'):0.4 | ('Am
y','red','Toyota'):0.3];

insert into Saw values [('Betty','green','Mazda'):0.5 | ('Betty','green','Toyota'):0.2 |
('Betty','green',NULL):0.3];

insert into Saw values [('Cathy','red','Acura'):0.6];

insert into Saw values [('Diane','red','Toyota'):0.2 | ('Di
ane','blue','Toyota'):0.8];


create trio table Drives(person varchar(32), color varchar(32), car varchar(32), uncertain(person, color,
car)) with confidences;

create index DRIVES_INDEX on Drives(person,color, car);

insert into Drives values [('Frank','red'
,'Toyota'):0.7 | ('Frank','blue','Toyota'):0.3];

insert into Drives values [('Billy','blue','Honda'):0.9];

insert into Drives values [('Jimmy','green','Mazda'):0.4 | ('Johnny','green','Mazda'):0.6];



9
.4

TriQL

language


(Fig 31
)

9
.4
.1 uncertainty


To
create Saw (witness, color, car) and Drives (person,
color, car) in the DBMS without confidences, basically
c
opy

the first part of

above script into
the
text
-
field
area
under home tab and press ‘execute’. The
application will execu
te and create two tables,

Drives
and Saw as seem in Fig 31
. All the data was
successfully inserted into the table.

The green color of
the table means uncertainty.


Trio Database System Management

13


(Fig 32
)

Selection

-

In Fig 32

shows the result
s

which selectted

all reconrds from Saw table if its car is toyato wh
ile
executing the
TriQL

‘select * from Saw where car =
‘Toyato’. In the table, the blue arrow on the left side
p牥獥n瑳W瑨攠W

敡e攬e慮T⁲ gU琠獩s攠睩瑨‿⁰ 敳enW猠
瑨攠慬W敲湡瑩W攮⁔Ue″M⁩渠 U攠污獴⁲散oT⁣on瑡楮猠s睯

瑵W汥猠lx
-
瑵W汥)


⡆楧″3)

Project
ion


䙩g″3⁳桯睳wWU攠牥獵r瑳f⁥x散畴楮g⁴Ue
query ‘
卥S散e 捯lo爠䙲om⁓ 眠坨敲攠捡c‽‧M慺T愧r
捡爠c‧ oXoW愧
⸠瑨楳ⁱu敲X⁷i汬⁦楮T⁴U攠co汯r猠o映獩fU瑥T
M慺T慳⁡湤⁔oXo瑡献

⡆楧″4)

Projection (Merged)


䙩g 34⁳ ow猠sUe⁲ 獵s瑳f
數散畴楮g 瑨攠煵
ery ‘
卥S散e⁍敲e敤⁣o汯爠䙲om⁓ 眠
坨敲攠捡爠c‧䵡穤愧 o爠捡r‽‧ oXo瑡W
⸠周楳ⁱ 敲e⁷楬氠
晩fT⁴U攠co汯牳f⁳楧 瑥T M慺T慳⁡湤⁔oXo瑡献s
M敲来e⁩渠 u敲e⁳瑡W敭敮琠睩汬w
敬業楮慴e

瑨攠
Tup汩捡瑥T⁴up汥猠楮⁨o物ron瑡氮W

⡆楧″5)

Join


䙩g″5⁳桯睳w瑨攠W敳u汴
猠s映數散畴楮g⁴Ueⁱ 敲e
‘Select S.witness, D.person as suspect, D.color, D.car

䙲om⁄物v敳⁄,⁓慷 S

Where D.color = S.color and D.car = S.car’. the query
橯楮猠卡s⁡湤⁄物v敳⁴慢汥 b慳敤n 瑨攠Wam攠co汯爮
Using merged fuction in query statement as ‘Selec

M敲来e M⹰敲eon⁡ ⁳畳 e捴ⰠM⹣.lor

䙲om⁄物v敳⁄,⁓慷 S

Where D.color = S.color’ will help to eliminate the
Tup汩捡瑥T⁴up汥献


Trio Database System Management

14


(Fig 36)

Duplicate
-
Elimination (Distinct)


䙩g 36⁳桯睳w瑨攠
results of executing query ‘
卥汥捴SM楳瑩ic琠colo爬⁣慲
晲fm⁓慷
’. The query scan the entire Saw and return
捯lo爠慮r⁣慲a景爠敡捨e瑵W汥⸠䉹⁵獩 g⁤楳瑩W捥c晵n捩con
睩汬⁥汥m楮楡i攠慮X⁶敲瑩捡氠Tup汩捡瑥T⁴up汥献

⡆楧″7)

Flatten


䙩g 37 獨s睳w瑨W 牥獵r瑳Wo映f硥捵瑩cgⁱ 敲X

卥汥捴⁆污瑴 n‪⁆ om⁓慷
’.
䙬慴a敮⁩e⁵
敤⁴o 瑵牮
瑵W汥猠l楴i⁡汴 牮a瑩We⁶慬a敳e楮Wo⁲ gu污l 瑵W汥献⁔桥
qu敲e⁣onv敲瑳 瑡扬攠卡眠in瑯⁡ 汩s琠o映獩fU瑩Wg猠s3崮

⡆楧″8
)

GroupAlts

-

Fig 38 shows

the reuslt
s

of executing the
TriQL

‘Select GroupAlts(color) * From Saw’.
周攠qu敲X
瑡步s⁡ 汩獴f

慬瑥牮a瑩ve猬s慮T⁲ o牧慮楺敳e瑨攠卡眠
table so the data is ‘keyed’ on color and uncertainty
慢ou琠捡c⁡湤⁷楴i敳猠[3崮
周攠䝲oup䅬瑳W晵n捩con⁩

u獥搠so⁣牥r瑥 o爠r敳e牵c瑵牥⁡汴W牮a瑩W攠v慬a敳e

⡆楧″9)

Horizontal Subqueries: The [ ] in the Where Claus
e


Fig 39 Shows the results of executing the query ‘Select
⨠䙲om⁓ w

坨敲攠2 㰽⁛卥 散e 䍯un琨*⤠䙲om⁓ 眠坨P牥r捡爠r
'Toyota']’. The ‘[ ]’ inside the statement was treated as
愠桯物ronW慬⁳abqu敲楥献e周攠qu敲e⁦楮T猠慬氠瑵s汥l⁷楴U
慴a汥慳琠W睯 慬瑥牮aW
ive猠楮volv楮g⁔oXo瑡献


The
[ ]

in the select clause

as ‘Select Merged witness,
孃oun琨Mi獴楮捴s捯lo爩崠r猠s捯lo牳

From Saw’


Trio Database System Management

15


(Fig 40)

Syntactic Shortcuts in [ ] for implicit table
-
list


䙩g‴0
獨潷s⁴U攠r敳畬瑳eo映數e捵c楮g⁴U攠qu敲e

‘Select * From S


Where color <=All [color]’. Color is one the attributes
楮⁴慢汥⁓慷⸠周攠qu敲X⁩ ⁤ 楮g
汥硩log牡rU楣⁣olo爠
捯mp慲a獯n献s周攠獨o牴捵琠楮⁛⁝⁡汳 ⁣慮⁵獥⁦ r
‘select * ‘ as


卥汥捴‪⁆ om⁓慷 坨敲攠䕸楳E猠季慲‽aG呯Xo瑡❝
’.

⡆楧‴1
)

9
.4
.2
Compute
Co
nfidences


To create Saw (witness, color, car) and Drives (person,
color, car) in the DBMS with confidences, c
opy the
second part of above script into text
-
field under home
tab and press ‘execute’. The application will
數e捵瑥c
慮T⁣牥慴r⁴wo 瑡扬敳e

M物v敳

慮T⁓慷⁷i
瑨W
捯n晩f敮捥猠慳ss敥m⁩渠䙩g 41
⸠周攠瑡扬攠co汯r⁣U慮geT
瑯 o牡rge
Ⱐ捯mpu瑥⁣on晩f敮捥e
⸠䅬氠瑨攠摡瑡⁷慳
獵捣敳獦畬汹⁩湳敲 敤⁩eWo⁴U攠瑡扬攮

⡆楧‴2)

Built
-
in Function Conf()


䙩g‴2 獨s睳w瑨W⁲ 獵sW猠潦
executing the query ‘Select S.witn
敳猬⁄⹰敲獯n⁡猠
獵獰散eⰠM⹣o汯爬⁄⹣.r

䙲om⁄物v敳⁄,⁓慷 S

坨敲攠M⹣o汯r‽⁓⹣olo爠慮T⁄⹣慲 㴠匮捡c

And Conf(D) > 0.3 And Conf(S) > 0.3’.
周攠con昨f⁴慫敳e
a single table name or variable from the ‘From’ clause
慳⁡ap慲am整敲Ⱐ慮T⁲整u牮猠sU攠con晩f敮ee

o映fUe
捵c牥湴⁡汴敲湡瑩W攠b敩eg ev慬a慴aT⁦ om⁴Ua琠瑡扬攮
周攠qu敲e 楮 M物v敳e慮T⁓慷 瑡扬e猠so⁧敮 牡瑥
獵s散e猠楦s捯n晩f敮e攠L‰.3.



Conf() for Multi
-
table
: ‘Select S.witness, D.person as
獵獰散eⰠM⹣o汯爬⁄⹣.r

䙲om⁄物v敳⁄,⁓慷 S

坨敲攠M⹣o汯r‽

匮colo爠慮T⁄⹣慲 㴠匮捡c

䅮T⁃ n昨匩‾‰.3⁁ T⁃on昨
*
) > 0.
2’ condition for
result alternatives with confidence > 0.2
.


Trio Database System Management

16


(Fig 43)

Built
-
in function Maybe()


䙩g‴3⁳ o睳w瑨攠W敳畬瑳eo映
executing query ‘
S敬散W⁓⹷楴i敳猬eM⹰敲eon⁡猠
獵獰散eⰠM⹣o汯爬⁄⹣


䙲om M物r敳eMⰠ卡,⁓坨敲攠
M⹣.lo爠㴠匮co汯爠慮T⁄⹣慲 㴠匮捡c

䅮T
No琠M慹a攨M⤩
䅮T
No琠M慹a攨匩S
’. Maybe() takes a table name or
variable from the ‘From’ clause as a parameter, and
牥瑵牮猠s牵e⁩映慮 on汹l楦iWU攠捵c牥湴r慬瑥牮a瑩ve⁢敩 g
敶慬a慴敤⁦
牯m⁴U慴a瑡扬攠com敳e晲om⁡ 瑵W汥⁷i瑨⁡W
‘?’.

⡆楧‴4)

Uniform result confidence


䙩g‴4⁳ o睳w瑨攠W敳畬瑳e
of executing the query ‘
卥S散e ⨬*un楦irm⁡猠son映䙲fm
卡w
’.
The uniform used with ‘as conf’ assigns
捯n晩f敮捥⁶慬a敳eWo⁡⁴up汥⁡猬l楦⁴U攠瑵Wl
攠U慳a
alternatives and no ‘?’, assign confidence 1/n to each
alternative, or if the tuple has n alternatives and a ‘?’,
慳獩an⁣on晩f敮e攠1I⡮(1⤠Wo⁥a捨⁡汴c牮慴楶攮⁓e⁴U攠
qu敲e⁣ompu瑥猠慮s⁲整u牮猠sU攠con晩f敮ee
s


⡆楧‴5)

Scaled result confidence



䙩g‴5⁳ ow猠sUe⁲ 獵s瑳f
executing the query ‘Select *, scaled as co
n映䙲om
Saw’. scaled used with ‘as conf’

慳獩an猠捯n晩f敮e攠
v慬a敳e瑯⁡ 瑵W汥l⁉映 Ue⁴upl攠U慳a⁣on晩f敮捥ev慬a敳
慮T⁡汴敲湡瑩v敳e⁡獳楧n⁣on晩f敮捥e1In⁴o⁥a捨c
慬瑥牮a瑩v攬eor

䥦⁴U攠瑵W汥lU慳⁣an晩f敮e攠v慬a敳e瑨慴W
獵洠Wo⁳Ⱐ慳獩,n⁣on晩f敮捥⁶慬a攠振s⁴o⁥a捨c
慬瑥牮a瑩v攬e睨敲w⁣⁩ ⁴U攠數楳瑩ig⁣on晩f敮捥⁶慬a攠
景爠rUa琠慬a敲湡瑩W攮

卯⁴U攠qu敲e⁣ompu瑥猠慮s
牥瑵牮猠sUe⁣on晩f敮捥献


9
.5

Table of
all possible
TriQL

contents



in [3] about the TriQL Query Language (website
http://infolab.stanford.edu/~widom/triql.html#options

), it listed all built
-
in functions for

querying

ULDB. For convinient, I c
olle
cted all and put them in a table

below.


ULDBs

Uncertian attibutes, maybe annotations and
confidence values

SQL over ULDBs

Selection, projection, join, subqueries, duplicate
-
elimination, grouping and aggregation, aggregate
variants, set operators, order
by

Flatten and GroupAlts

Flatten

is used to turn tuples with alternative
values into regular tuples, while GroupAlts is used
to create or restructure alternative values

Horizontal subqeries: The [ ] construct

[ ] in the where clause, [ ] w
ith joins, Synt
actics
shortcuts in [ ],
[ ] in the select clause, [ ] with Self
-
Joins


Trio Database System Management

17


Builit
-
in Functions Conf() and Maybe()

Multi
-
table conf()

Result confidences

Result confidence evaluation, uniform and scaled
result confidences, On
-
Demand confidence
computation

Bui
lt
-
in Predicate Lineage()

The
Lineage()

predicate lets queries filter joined
tuples based on whether they are related via
lineage

Options Nolineage, Noconf, and NoMaybe

Indicate lineage, confidence values, and/or?'s
should be omitted from query results

D
ata modificaiton

Insert statement, delete statement, update
statement




10
.0 Advantage and Disadvantage of using Trio DBMS


10
.1 Advantage



10
.1.1 Open source

and free support

for any non
-
benefit users to experience
new
Trio DBMS

Trio DBMS was create
d by Stanford University

at Dec, 2006 and updated
very
often with new
plug
-
in and Trio version. If uncounted any problems, the supporter in Stanford University, like
Martin, Theobald, will provide solutions.
Also there are many resources available for user
s to
better understand about Trio DMBS in term of design/architecture, components, query
structure, and more.



10
.1.2
Advanced
components in
relation
al

DBMS

Current relational DBMSs, like Oracle, SQL, DB2, and more, can handle well
-
structure data easil
y,
but not any uncertainty data and lineage. Hence, the Trio DBMS is more advanced.

In Stanford
Trio project, the ULDB was successfully built on top of postgreSQL. I believe later, it can be
implemented on any relational DBMS as one of plug
-
in.


10
.
1.3

Co
mputing confidence
s


Computing Confidences is one of function in Trio System. It is very important for calculating the
probability of each tuple in total. From the marketing perspective, the probability gives the
better view of users to make decision, data

analysis, and statistics.



10
.1.4

E
fficient, Convenient, safe, Multi
-
User storage of and access to, Massive, Persistent data
[6]

Persistent and convenient is because all data stored in simple tables (“relations”) and queries
and updates via simpl
e but powerful declarative language (SQL). In data transactions, it is safer,
and also allows multi
-
user access. The DBMS can storage and indexing structures which makes it
massive and efficient.


10
.2 Disadvantage



10
.2.1 Time cost for query

In Trio

DBMS query structure, the time costing to query uncertainty, lineage, and confidences,
or regular SQL is more than regular relational DBMS because Trio needs to create super set of
tuples which requires several extra steps. As below example, ULDB takes fo
ur steps and
relational database takes only two steps. Therefore, relational database query is much faster
than ULDB.


Using

SELECT attr
-
list FROM X
1
, X
2
, ..., X
n
WHERE predicate
’ as a query example
in [6]
for a
comparison between relational database and
ULDB.


Trio Database System Management

18


Over standard relational database:

For each tuple in cross
-
product of X
1
, X
2
, ..., X
n

1.

Evaluate the predicate

2.

If true, project attr
-
list to create result tuple


Over ULDB:

For each tuple in cross
-
product of X
1
, X
2
, ..., X
n

1.

Create “super tuple”
T

fr
om all combinations of alternatives

2.

Evaluate predicate on each alternative in
T
; keep only the true ones

3.

Project attr
-
list on each alternative to create result tuple

4.

Details: ‘?’, lineage, confidences


10
.2.2 Dependency

Trio DBMS
is not a completed DBMS
but

depending on any relational DBMS, like postgreSQL.
The TrioExplorer was built in using python and other packages. Later some packages was
updated to new version, for instance, graphviz 2.16, it is not compatible with TrioExplorer which
will cause probl
ems. Therefore, in order to keep Trio DBMS running, it requires efforts to
maintain, reconfigure, and update.


10
.2.3
O
n development stage

-

T
rio project has not been
develop
ed completely

with all functionalities
,
such as TrioExplorer for DB admonition, D
B security, and more.




11
.0
Documenting
Trio S
ystem report
/bugs


During the experiment of Stanford Trio project, I went through the Trio instalation, TrioExplorer,
TrioPlus and
TriQL
. There are several places
with
mistakes/not correct/imcomplete.


11.1.

T
he i
nstall instruction

in website
http://dbpubs.stanford.edu:8011/doku.php/trio:installation

,
indicated unclearly the version of
Graphviz

for Trio system. In Graphviz website
http://www.graphviz.org/

only has version 2.16 but not compatable except version 2.14.
Graphviz version 2.14 is available for download in
http://infolab.
stanford.edu/trio/code/graphviz
-
2.14.1.exe

.


11.2.

The window
s

authentication supperuse
r

needs to be created
first in the PostgreSQL

in order to
connect to database. After established the connection,
TrioExplorer

and TrioPlus

can use the
supperuser’s login and

password as windows authentiction to access to database system
.
However, i
t doesn’t mention at

all

in the installation procedure o
n how to create this typle of

new user
. The only way to solve it is to
us
e PostgreSQL
-
>pgadmin III manually.


11.3.

After created
the supperuser, I have to modify
some

code
s in setup.py

in Trio
-
1.0
-
>setup
directory in order to run ‘python setup.py

u myname

d myname

p’.


11.4.

TriQL

query statements in
http://infola
b.stanford.edu/~widom/triql.html#options
, there are
many

samples queries not working properly as desired.




1
2
.0
Written C
omponent
s


1
2
.1
Turn
-
in D
ocuments

Turn in Special interesting activity task plan summary, Activity deliverables, Standard, minimal
d
ocumentation of hands
-
on work,
and
Electronic copy of activity
.


Trio Database System Management

19



1
2
.2 Demo and P
resentation



1
2
.2.1 Presentation of Trio database system architecture



B
rief description of Trio database system architecture, ULDB data model, Python API, TriQL

query st
ructure, features,
installation step
-
by
-
step instruction,
Python
Sever Installation step
-
by
-
step instruction,
and more



1
2
.2.2
Demo

Launch Python server, PostgreSQL, TrioExplorer, TrioPlus, TriQL (Create tables, indexes,
insert, select,

update, more query statement).




1
2
.3 R
eflective written component

After spent some many hourses experimenting Trio project, I learned
about
python (server,
coding, and executing programs), PostgreSQL (how different than other DBMS, installation,
e
tc), Trio (installation, architecture, TriQL, and ULDB
, TrioExplorer, TrioPlus), and more.
during the experiment, I found out several things are very important to complete my goal
such as support, resources, environment, and scale. The support means where
to get help if
encouted problems. Resources can provide a bais picture of the entire system, so I know
what I am working on. Environment is where to experienment the project and what the
operating system is, what the database server is, and more. The last
one is the scale. To make
sure to complete the project on time, I have to know how big the project is in order to
manage my time. I felt
that
this is a greate experince to establish skill and ability

in term of
trouble shooting, problem solving, and adopti
ng new technology.




1
3
.0 References


[1]

M. Mutsuzaki, M. Theobald, A. de Keijzer, J. Widom, P. Agrawal, O. Benjelloun, A. Das Sarma, R.
Murthy, and T. Sugihara.
Trio
-
One: Layering Uncertainty and Lineage on

a Conventional DBMS
.
Proceedings of the Third Biennial Conference on Innovative Data Systems Research (CIDR '07),
Pacific Grove, California, January 2007. Demonstration description.


[2]

O. Benjelloun, A. Das Sarma, C. Hayworth, and J. Widom.
An Introduction to ULDBs and the Trio
System
. IEEE Data Engineering Bulletin, Special Issue on Probabilistic Databases, 29(1):5
-
16,
March 2006.


[3]

Trio: A System for integrated Management of Data, Uncertainty, and Linea
ge
. Retrieved on
November, 18, 2007 from
http://infolab.stanford.edu/trio/

.


[4]

PostgreSQL
. Retrieved on November, 20, 2007 from
http://www.postgresql.org/
.


[5]

Python
. Retrieved on November, 15, 2007 from http://www.python.org/.


[6]

Trio: A System for Data, Uncertainty, and Lineage
.

g
iven by Jennifer at various venues, 2006
-
07
.
Ppt.