Skip to content

Latest commit

 

History

History
55 lines (38 loc) · 1.85 KB

README.md

File metadata and controls

55 lines (38 loc) · 1.85 KB

APEx: Accuracy-Aware Differentially Private Data Exploration

Source code for the ACM SIGMOD 2019 paper:

Chang Ge, Xi He, Ihab F. Ilyas, Ashwin Machanavajjhala: APEx: Accuracy-Aware Differentially Private Data Exploration. SIGMOD Conference 2019: 177-194

Full papper is available on arXiv. You can also watch a video for a quick introduction.

Installation

APEx was built using Python and MySQL as the backend data management. It was tested on Python 3.6 and MySQL Server 5.5. As the first step, clone this rep:

git clone https://github.com/cgebest/APEx.git 
cd APEx

1. Install Python dependencies

The dependencies are listed in the environment.yml. If you use conda as the package manger, dependencies can be installed using the following command:

conda env create -f=environment.yml
conda activate apex

2. Install and configure MySQL

If you do not have a native MySQL server running on your system, an easy way is to start a MySQL docker container.

docker run --name apexsql -e MYSQL_ROOT_PASSWORD=rootPass -p 3306:3306 -d mysql

We provide an US Census database image for the testing purpose. To import the image:

cd data
./importDB.sh

Run APEx

To run the sample queries, simply go to the test directory, and run the following command:

cd test
python test_census.py

To run your own queries, please refer the following folders to define your data and queries:

  • ./query/: workload query definition. See examples of census and location.
  • ./privacy/: privacy engine and many differential privacy mechanisms.
  • ./conn/: database connection.

Questions?

Please reach out to Chang Ge (chang.ge AT uwaterloo.ca) for questions and comments.