Commit 22a67a38 authored by Reinhard Munz's avatar Reinhard Munz


parent 442ac255
......@@ -4,19 +4,29 @@ UniTraX is a data analytics system that provides users with a personal
differentially private bound on privacy loss. UniTraX is able to allow more
queries than previous systems, without giving up on analytic accuracy.
This repository contains a research prototype implementation of UniTraX.
For further information, please, read our paper
"UniTraX: Protecting Data Privacy with Discoverable Biases" at
or the extended technical report (additionally includes the proofs, otherwise
identical) at
This repository contains the research prototype implementation of UniTraX. It is
an extended version beyond the one used for the paper.
## Installation
The following reflects the setup we used for our experiments.
Machine 1: The remote DB server
* Windows Server 2016 (on two separate machines)
* MS SQL Server
Machine 2: UniTraX server/client machine
* Windows Server 2016 (on two separate machines)
* MS SQL Server (on Machine 1; this is the DB server)
* Visual Studio (on Machine 2; this is the UniTraX server and client machine)
* C# framework 4.7.2
* Git
* PINQ from
* Java
* Financial/Medical data from
* Mobility data from (we used an older version of January 2013 yellow cab data)
......@@ -31,16 +41,37 @@ We prepared the mobility data manually. Thus, there is no record transformer for
that dataset in the repository. Please have a look at the mobility dataset's
data access files to infer a working schema and produce corresponding csv files.
## Configuration
There are no configuration files. Veriables are hard-coded in each experiment's
main file. Accordingly, each experiment compiles into its own executable.
The only file that must be adapted is the DB server description file in the
hosts folder of the data provisioning part of the infrastructure library.
Please provide your own file instead of ExampleDBServer.cs.
The Windows firewall on Machine 1 (the DB server) must be configured to allow
remote connections, including access to the management interface as well as
power shell.
We especially remember the following two problems we had with Windows:
1. Only the built-in Administrator account had all the permissions for our
commands, a manually added administrator account did not work
2. Turning off the firewall prevented management connections, the firewall had
to be turned on and the correct rules be active (we simply activated all
possible templates)
## Operation
In our setup Machine 1 has nothing but MS SQL Server installed and works as the
remote database server.
Machine 2 does anything else. This includes experiment setup / teardown.
Machine 2 does everything else. This includes all experiment setup / teardown.
Experiments roughly follow the following plan:
Experiments roughly follow the following outline:
1. Start Experiment App on Machine 2
1. Get started on Machine 2
2. Connect to Machine 1
* Drop any databases
* Stop MS SQL service
......@@ -57,10 +88,15 @@ Experiments roughly follow the following plan:
4. Setup one of Direct (no protection), PINQ, or UniTraX (utilizing PINQ)
5. Execute queries
6. Dump log
7. Query for remaining privacy budgets (this sometimes takes a long time)
7. Query for remaining privacy budgets (this can take significant time)
8. Dump budget data
9. Repeat for different parameters
We used the log converter to read the logs and plot graphs with gnuplot. Again,
this utility is implemented in Java and was only ever used on OSX.
Good luck :D
\ No newline at end of file
## Contact
Please feel free to contact me at
However, I might be busy with other things and not be able to help you.
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment