برنامه نویسی

🦆 💏 🐘 اجازه دهید PostgreSQL و duckdb “sql” را با هم بگذارید

Summarize this content to 400 words in Persian Lang

❔ درباره

بنابراین شما هم یکی از طرفداران PostgreSQL هستید و هم اخیراً duckdb پذیرندهشما هر دو پایگاه داده را برای آنها دوست دارید نقاط قوت و اکوسیستم ها… و تعجب می کنم که چگونه می شود

امکان ارسال یکپارچه داده ها از/به یکدیگر پایگاه داده ها… بدون نیاز به کدنویسی، منظور من است چیزی بیشتر از بازی نیست sql shell دستورات در ترمینال

: بدون پایتون، بدون جاوا،…

👉 خب این دقیقاً همان چیزی است که من در این پست در مورد آن صحبت خواهم کرد به لطف:

🤔 اما چرا این پست؟

3 دلیل اصلی این مقاله و چرایی کشیدن/قرار دادن از آن PostgreSQL/duckdb در این مرحله عبارتند از:

DuckDB
PostgreSQL

مدل پایگاه داده
پایگاه داده ستونی
پایگاه داده رابطه ای

مجوز
با
مانند BSD

بدون سرور
بله
خیر

🎯 کاری که ما انجام خواهیم داد

ما فقط از ترمینال:

🐋 نصب و راه اندازی یک پایگاه داده کانتینری PostgreSQL (با Podman)

🐘 ایجاد کنید یک پایگاه داده

🔁 ایجاد و تغذیه کنید یک میز کوچک

🪄 را بخوانید psql جدول از duckdb

🗜️ صادرات psql جدول به فایل پارکت

🔬 بازرسی کنید parquet فایل با parquet-cli

همچنین ما انجام خواهیم داد حرکت معکوس :

یک جدول در PostgreSQL از داخل ایجاد کنید duckdb

تست محتویات جدول از sql

🍿 نسخه ی نمایشی

📜 shell اسکریپت ها

یک نمونه PostgreSQL را نصب و راه‌اندازی کنید:

export PGPASSWORD=mysecretpassword

# Boot a postgresql instance
podman run –name postgres -e POSTGRES_PASSWORD=$PGPASSWORD -d\
-p 5432:5432 docker.io/library/postgres

# Check container status
podman ps -a

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نصب کنید psql بنابراین می توانیم از خارج از Contenair به PostgrSQL برسیم:

# Install `psql` on the host so the database can be accessed
# from outside de container
sudo apt install -y postgresql-client

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون، چند شی PostgreSQL ایجاد کنید:

# Create a demo database
psql -h localhost -p 5432 -U postgres -c “CREATE DATABASE demo;”

# Create a table
psql -h localhost -p 5432 -U postgres -d demo\
-c “CREATE table customers(id varchar primary key);”

# Feed the PostgreSQL table with some data
psql -h localhost -p 5432 -U postgres -d demo\
-c “insert into customers values \
(‘Duffy duck’),\
(‘Daisy Duck’),\
(‘Donald Duck’),\
(‘Ludwig Von Drake’);”

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نصب کنید duckdb :

# (Quick and dirty) duckdb install
wget https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-linux-amd64.zip
unzip duckdb_cli-linux-amd64.zip
cp duckdb /usr/bin/
rm duckdb duckdb_cli-linux-amd64.zip

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا کارهای جالب را انجام دهید…

دسترسی به پایگاه داده PostgreSQL از duckdb

بیایید از پایگاه داده postgres برسیم duckdb :

duckdb -c “ATTACH ‘dbname=demo user=postgres password=mysecretpassword host=127.0.0.1’\
AS db (TYPE POSTGRES, READ_ONLY);
show all tables;
select * from db.customers;
COPY db.customers TO ‘db.customers.parquet’ (FORMAT PARQUET);”

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

… سپس خروجی را بررسی کنید parquet فایل:

ls -ltr
file db.customers.parquet

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

… و نتیجه را بخوانید parquet فایل از duckdb :

duckdb -c “select * from ‘db.customers.parquet’;”

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه آزمایش parquet فایل با parquet-cli :

pip install parquet-cli
parq -h

parq db.customers.parquet –count
parq db.customers.parquet –head
parq db.customers.parquet –tail

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

duckdb ➡️ PostgreSQL

بیایید:

“ضمیمه” نمونه راه دور PostgreSQL از duckdb زمان اجرا

ایجاد کنید یک میز

خوراک جدول

انتخاب کنید محتویات جدول از psql

duckdb -c “ATTACH ‘dbname=demo user=postgres password=mysecretpassword host=127.0.0.1’\
AS db (TYPE POSTGRES);\
create table db.heroes(name varchar primary key);\
insert into db.heroes values\
(‘Dumbo’),\
(‘Man-Elephant’),\
(‘Tantra’),\
(‘Elephant Man’),\
(‘The Elephantmen’),\
(‘Mammomax’) ;

psql -h localhost -p 5432 -U postgres -d demo\
-c “select * from heroes;”

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

⚖️ بیشتر در مورد DuckDB در مقابل PostgreSQL

در زیر این تفکیک بسیار مصنوعی از هجوم داده را ببینید:

❔ درباره

بنابراین شما هم یکی از طرفداران PostgreSQL هستید و هم اخیراً duckdb پذیرنده
شما هر دو پایگاه داده را برای آنها دوست دارید نقاط قوت و اکوسیستم ها… و تعجب می کنم که چگونه می شود

امکان ارسال یکپارچه داده ها از/به یکدیگر پایگاه داده ها… بدون نیاز به کدنویسی، منظور من است چیزی بیشتر از بازی نیست sql shell دستورات در ترمینال

: بدون پایتون، بدون جاوا،…

👉 خب این دقیقاً همان چیزی است که من در این پست در مورد آن صحبت خواهم کرد به لطف:

🤔 اما چرا این پست؟

3 دلیل اصلی این مقاله و چرایی کشیدن/قرار دادن از آن PostgreSQL/duckdb در این مرحله عبارتند از:

DuckDB PostgreSQL
مدل پایگاه داده پایگاه داده ستونی پایگاه داده رابطه ای
مجوز با مانند BSD
بدون سرور بله خیر

🎯 کاری که ما انجام خواهیم داد

ما فقط از ترمینال:

  1. 🐋 نصب و راه اندازی یک پایگاه داده کانتینری PostgreSQL (با Podman)
  2. 🐘 ایجاد کنید یک پایگاه داده
  3. 🔁 ایجاد و تغذیه کنید یک میز کوچک
  4. 🪄 را بخوانید psql جدول از duckdb
  5. 🗜️ صادرات psql جدول به فایل پارکت
  6. 🔬 بازرسی کنید parquet فایل با parquet-cli

همچنین ما انجام خواهیم داد حرکت معکوس :

  1. یک جدول در PostgreSQL از داخل ایجاد کنید duckdb
  2. تست محتویات جدول از sql

🍿 نسخه ی نمایشی

https://www.youtube.com/watch?v=2TX8xjZkrz8

📜 shell اسکریپت ها

یک نمونه PostgreSQL را نصب و راه‌اندازی کنید:

export PGPASSWORD=mysecretpassword

# Boot a postgresql instance
podman run --name postgres -e POSTGRES_PASSWORD=$PGPASSWORD -d\
    -p 5432:5432 docker.io/library/postgres

# Check container status
podman ps -a
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نصب کنید psql بنابراین می توانیم از خارج از Contenair به PostgrSQL برسیم:

# Install `psql` on the host so the database can be accessed
# from outside de container
sudo apt install -y postgresql-client
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون، چند شی PostgreSQL ایجاد کنید:

# Create a demo database
psql -h localhost -p 5432 -U postgres -c "CREATE DATABASE demo;"

# Create a table
psql -h localhost -p 5432 -U postgres -d demo\
    -c "CREATE table customers(id varchar primary key);"

# Feed the PostgreSQL table with some data
psql -h localhost -p 5432 -U postgres -d demo\
    -c "insert into customers values \
    ('Duffy duck'),\
    ('Daisy Duck'),\
    ('Donald Duck'),\
    ('Ludwig Von Drake');"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نصب کنید duckdb :

# (Quick and dirty) duckdb install
wget https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-linux-amd64.zip
unzip duckdb_cli-linux-amd64.zip
cp duckdb /usr/bin/
rm duckdb duckdb_cli-linux-amd64.zip
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا کارهای جالب را انجام دهید…

دسترسی به پایگاه داده PostgreSQL از duckdb

بیایید از پایگاه داده postgres برسیم duckdb :

duckdb -c "ATTACH 'dbname=demo user=postgres password=mysecretpassword host=127.0.0.1'\
    AS db (TYPE POSTGRES, READ_ONLY);
show all tables;
select * from db.customers;
COPY db.customers TO 'db.customers.parquet' (FORMAT PARQUET);"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

… سپس خروجی را بررسی کنید parquet فایل:

ls -ltr
file db.customers.parquet
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

… و نتیجه را بخوانید parquet فایل از duckdb :

duckdb -c "select * from 'db.customers.parquet';"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه آزمایش parquet فایل با parquet-cli :

pip install parquet-cli
parq -h

parq db.customers.parquet --count
parq db.customers.parquet --head
parq db.customers.parquet --tail
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

duckdb ➡️ PostgreSQL

بیایید:

  1. “ضمیمه” نمونه راه دور PostgreSQL از duckdb زمان اجرا
  2. ایجاد کنید یک میز
  3. خوراک جدول
  4. انتخاب کنید محتویات جدول از psql
duckdb -c "ATTACH 'dbname=demo user=postgres password=mysecretpassword host=127.0.0.1'\
    AS db (TYPE POSTGRES);\
    create table db.heroes(name varchar primary key);\
    insert into db.heroes values\
        ('Dumbo'),\
        ('Man-Elephant'),\
        ('Tantra'),\
        ('Elephant Man'),\
        ('The Elephantmen'),\
        ('Mammomax') ;
"

psql -h localhost -p 5432 -U postgres -d demo\
    -c "select * from heroes;"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

⚖️ بیشتر در مورد DuckDB در مقابل PostgreSQL

در زیر این تفکیک بسیار مصنوعی از هجوم داده را ببینید:

توضیحات تصویر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا