SECYAN c++ implementation
Project description
Secure Yannakakis: Join-Aggregate Queries over Private Data
More Docs are under /docs folder
Requirements
For Debian Linux
- build-essential (gcc >= 8)
- cmake >= 3.12
- libssl-dev
- libgmp-dev
- libboost-all-dev (Boost >= 1.66)
For macOS
- brew install cmake
- brew install openssl
- brew install gmp
- brew install boost
- brew install pybind11
CMAKE-flag -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib
Run the example in Docker
First install docker on your local machine, and then in the main folder, run
docker-compose build dev
dokcer-compose up dev
And now you can ssh into the container like
ssh user@localhost -p 2222
Configure and Compile
git clone --recurse-submodules https://github.com/Aqua-Dream/SECYAN
cd SECYAN
mkdir Release
cd Release
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j 8
Run Demo
Switch to the output folder Release/src/example
.
# Server
> ./secyandemo
Who are you? [0. Server, 1. Client]: 0
Establishing connection... Finished!
Which query to run? [0. Q3, 1. Q10, 2. Q18, 3. Q8, 4. Q9]: 2
Which TPCH data size to use? [0. 1MB, 1. 3MB, 2. 10MB, 3. 33MB, 4. 100MB]: 2
Start running query...
Dummy Relation!
Running time: 5277ms
Communication cost: 266.873 MB
Finished!
# Client
> ./secyandemo
Who are you? [0. Server, 1. Client]: 1
Establishing connection... Finished!
Which query to run? [0. Q3, 1. Q10, 2. Q18, 3. Q8, 4. Q9]: 2
Which TPCH data size to use? [0. 1MB, 1. 3MB, 2. 10MB, 3. 33MB, 4. 100MB]: 2
Start running query...
row_num o_custkey o_orderkey o_orderdate o_totalprice c_name annotation
1 667 29158 1995-10-21 439687.19 00000667 305
2 178 6882 1997-04-09 422359.62 00000178 303
Running time: 3714ms
Communication cost: 266.41 MB
Finished!
Run Benchmark
Switch to the output folder Release/src/example
.
> ./benchmark
Usage: ./benchmark
-r [Role: 0/1, default: 0 (SERVER), required]
-a [IP-address, default: 127.0.0.1, optional]
-p [Port (will use port & port+1), default: 7766, optional]
-n [Number of test runs, default: 3, optional]
-q [Query ID (3,10,18,8,9,0), default: 0, i.e. test all queries. , optional]
Program exiting
> ./benchmark -r 0 -p 7706 > result_server.txt &
> ./benchmark -r 1 -p 7706 -q 3> result_client.txt &
Remark
- SECYAN only read the last 8 digits of string from data file. For example, the the first row of column
c_name
incustomer.tbl
isCustomer#000000001
, but it will be outputted as00000001
. - To use your own data, please refer to the format of files under
data
folder. SECYAN currently cannot generate annotations automatically. You need to write the annotation columns on your own. - To run your own query, please refer to the file
data/TPCH.cpp
. SECYAN currently cannot generate codes from SQL automatically. You need to rewrite your query into combinations of operators (Aggregation
,SemiJoin
,Join
,etc.).
Acknowledgment
Thank SixSiebenUno for helping writing the code.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
secyan_python-0.2.7.tar.gz
(20.4 MB
view details)
Built Distribution
File details
Details for the file secyan_python-0.2.7.tar.gz
.
File metadata
- Download URL: secyan_python-0.2.7.tar.gz
- Upload date:
- Size: 20.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 219dbd793af74a2dfc910911dfc2ef925ba391c19ac4787034edfc56b75e1f23 |
|
MD5 | 5c8d2ab3d90d2535b5b5fa0ef5956554 |
|
BLAKE2b-256 | 569ea73db3744ee98d1428a201781ab15b568171258518792f2f38a657c4ca42 |
File details
Details for the file secyan_python-0.2.7-cp39-cp39-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: secyan_python-0.2.7-cp39-cp39-macosx_10_15_x86_64.whl
- Upload date:
- Size: 842.8 kB
- Tags: CPython 3.9, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7452383745032a76aa1df902afec1eb6b3a1745b4f97e9db4377ae294cce2718 |
|
MD5 | eea076937cc18e11e21c32e5f8995d69 |
|
BLAKE2b-256 | 1a9ecb243c5fc1b6932600c0c93f35fd22a2d327a464aa15a636be927a599fbf |