PostgreSQL is a very very powerful database engine by itself, there are many advanced functions which is far beyond the standard SQL query.
The following combo are great as a starting point with the following functionality.
TimescaleDB – Time Series Database, support time based partitioning of data sharding.
https://docs.timescale.com/latest/getting-started
MadLib – a DB extension to carry out common Machine learning program within the DB.
https://cwiki.apache.org/confluence/display/MADLIB/Architecture
Here are the installation steps.
# install PostgreSQL and PGXN client deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update sudo apt-get -y install postgresql-10 libpq-dev postgresql-server-dev-10 postgresql-plpython-10 pgxnclient cmake g++ m4 # Include the TimescaleDB PPA sudo add-apt-repository ppa:timescale/timescaledb-ppa sudo apt-get update # Install the TimescaleDB sudo apt install timescaledb-postgresql-10 sudo timescaledb-tune --quiet --yes # Install MADLib sudo pgxnclient install madlib sudo pgxnclient load madlib # Install CStore sudo apt-get install bison flex git libreadline-dev libz-dev git libpq-dev libprotobuf-c0-dev make protobuf-c-compiler sudo pgxn install cstore_fdw sudo pgxn load cstore_fdw
After you installed all of them, you may play around with the example.
https://docs.timescale.com/latest/tutorials/tutorial-hello-nyc
For each newly created db, we need to enable the extensions, for example.
CStore Reference
https://www.citusdata.com/blog/2014/04/03/columnar-store-for-analytics/
https://info.citusdata.com/rs/235-CNE-301/images/Columnar_Store_for_PostgreSQL_Using_cstore_fdw_Webinar_Slides_0915.pdf
CREATE USER jimmy WITH PASSWORD 'xxxxxx'; CREATE DATABASE testdb OWNER=jimmy LC_COLLATE='C' LC_CTYPE='C' template=template0; GRANT ALL ON DATABASE testdb to jimmy; \c testdb CREATE EXTENSION plpythonu; CREATE EXTENSION madlib; CREATE EXTENSION timescaledb; CREATE EXTENSION cstore_fdw; CREATE SERVER cstore_server FOREIGN DATA WRAPPER cstore_fdw; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jimmy; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to jimmy; GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to jimmy;