Skip to content

SCQL (Secure Collaborative Query Language) is a system that allows multiple distrusting parties to run joint analysis without revealing their private data.

License

Notifications You must be signed in to change notification settings

secretflow/scql

Repository files navigation

SCQL

CircleCI

Secure Collaborative Query Language (SCQL) is a system that translates SQL statements into Secure Multiparty Computation (SMC) primitives and executes them on a federation of database systems.

SCQL Workflow

Contents

Build

Prerequisite

Docker

## start dev container
docker run -d -it --name scql-dev-$(whoami) \
         --mount type=bind,source="$(pwd)",target=/home/admin/dev/ \
         -w /home/admin/dev \
         --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
         --cap-add=NET_ADMIN \
         --privileged=true \
         secretflow/scql-ci:latest /bin/bash

# attach to dev container
docker exec -it scql-dev-$(whoami) bash

Build & UnitTest

# prerequisite
# spu needs numpy
pip install numpy

# build SCQL engine as release
bazel build //engine/exe:scqlengine -c opt

# test

# run unittests for SCQL engine
bazel test //engine/...

# update scdb proto
make pb

# build scdb code
make

# run scdb unit tests
go test ./pkg/...

Build docs

# prerequisite
pip3 install -U -r docs/requirements.txt

# Build HTML docs, and the result is placed in directory 'docs/_build/html'
# Build documentation in English
make doc

# Build documentation in Chinese
make doc-cn

Hardware Requirements

The following requirements only apply to SCQLEngine.

  • CPU
    • x86_64: minimum required AVX instruction set. For FourQ based PSI, the AVX2 instruction set is required.

Disclaimer

Non-release versions of SCQL are prohibited to use in any production environment due to possible bugs, glitches, lack of functionality, security issues or other problems.

Acknowledgments

  • Thanks TiDB for providing a powerful SQL parser and planner.