/neurdb

AI-powered Autonomous Data System

Primary LanguageCOtherNOASSERTION

logo

NeurDB Website Github GitHub commit activity GitHub contributors Docker Code style: black

paper-24-1 paper-24-2

NeurDB is an AI-powered autonomous data system.

Installation

Clone the latest code

git clone https://github.com/neurdb/neurdb.git
cd neurdb
# Give Docker container write permission
chmod -R 777 .

Build Dockerfile

bash build.sh

Wait until the following prompt shows:

Please use 'control + c' to exit the logging print
...
Press CTRL+C to quit

Usage

Create Shell

docker exec -it neurdb_dev bash

Run Connector (in Docker Container)

$NEURDBPATH/psql/bin/psql -h 0.0.0.0

Start/stop the server (in Docker container)

# (Start/stop as a service)
$NEURDBPATH/psql/bin/pg_ctl -D $NEURDBPATH/psql/data start
$NEURDBPATH/psql/bin/pg_ctl -D $NEURDBPATH/psql/data stop

# (Start in frontend)
$NEURDBPATH/psql/bin/postgres -D $NEURDBPATH/psql/data -h 0.0.0.0

Development

Code Formatting

All tools are managed by pre-commit.

After installing pre-commit, run the following command:

pre-commit run -a

Increase logging level

Update $NEURDBPATH/psql/data/postgresql.conf by changing the corresponding settings:

log_min_messages = DEBUG1
log_min_error_statement = DEBUG1

Miscellaneous

If the server complains about the permission of the data directory, run the following command to fix it:

chmod 750 $NEURDBPATH/psql/data

Sometimes, the OS language settings could also affect the server starting. In such case, run the following commands:

export LANG="en_US.UTF-8"
export LC_COLLATE="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
export LC_MONETARY="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
export LC_TIME="en_US.UTF-8"
export DYLD_LIBRARY_PATH=$NEURDBPATH/psql/lib:$DYLD_LIBRARY_PATH

Troubleshooting

Building

./configure: line ...: config.log: Permission denied

Check the permissions of (1) executing for dbengine/configure (2) writing for other directories.

pg_ctl: directory "/code/neurdb-dev/psql/data" is not a database cluster directory

This happens when you have directory psql/data without initializing the database, e.g., if the init script exits abnormally before. By default, to avoid data loss, the init script will not touch psql/data if it already exists. To solve this, remove psql/data manually.

Citation

Our vision paper can be found in:

@article{neurdb-scis-24,
  author = {Beng Chin Ooi and
            Shaofeng Cai and
            Gang Chen and
            Yanyan Shen and
            Kian-Lee Tan and
            Yuncheng Wu and
            Xiaokui Xiao and
            Naili Xing and
            Cong Yue and
            Lingze Zeng and
            Meihui Zhang and
            Zhanhao Zhao},
  title  =  {NeurDB: An AI-powered Autonomous Data System},
  journal=  {SCIENCE CHINA Information Sciences},
  year   =  {2024},
  pages  =  {-},
  url    =  {https://www.sciengine.com/SCIS/doi/10.1007/s11432-024-4125-9},
  doi    =  {https://doi.org/10.1007/s11432-024-4125-9}
}