۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

Steampipe unbundled: از APIهای ابری تا پایگاه داده شما

هر پلاگین Steampipe اکنون به عنوان یک بسته داده خارجی برای Postgres، یک افزونه جدول مجازی برای SQLite و یک ابزار صادرات مستقل در دسترس است.

هر پلاگین Steampipe اکنون به عنوان یک بسته داده خارجی برای Postgres، یک افزونه جدول مجازی برای SQLite و یک ابزار صادرات مستقل در دسترس است.

ما دیده‌ایم که چگونه Steampipe می‌تواند دسترسی به APIها را یکپارچه کند، جستجوی متا را درایو کند، KPIها را به‌عنوان کد اعمال کند، و پیکربندی را شناسایی کند رانش. افزونه‌های فعال‌کننده تا همین اواخر، کاملاً به باینری Steampipe و نمونه‌ای از Postgres که Steampipe راه‌اندازی می‌کند متصل بودند. و کنترل ها این باعث شد تا اعضای جامعه منبع باز Steampipe بپرسند: “آیا می توانیم از افزونه ها در پایگاه داده Postgres خود استفاده کنیم؟” اکنون پاسخ مثبت است – و بیشتر. اما اجازه دهید ابتدا روی Postgres تمرکز کنیم.

استفاده از پلاگین Steampipe به عنوان یک بسته داده خارجی Postgres

از دانلودهای Steampipe دیدن کنید تا نصب کننده سیستم عامل خود را پیدا کنید و آن را اجرا کنید تا Postgres را بدست آورید توزیع بسته داده خارجی (FDW) یک افزونه—در این مورد، افزونه GitHub.

$ sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/postgres.sh)"
Enter the plugin name: github
Enter the version (latest): 

Discovered:
- PostgreSQL version:   14
- PostgreSQL location:  /usr/lib/postgresql/14
- Operating system:     Linux
- System architecture:  x86_64

Based on the above, steampipe_postgres_github.pg14.linux_amd64.tar.gz will be downloaded, extracted and installed at: /usr/lib/postgresql/14

Proceed with installing Steampipe PostgreSQL FDW for version 14 at /usr/lib/postgresql/14?
- Press 'y' to continue with the current version.
- Press 'n' to customize your PostgreSQL installation directory and select a different version. (Y/n): 

Downloading steampipe_postgres_github.pg14.linux_amd64.tar.gz...
########################################################################################### ۱۰۰.۰%
steampipe_postgres_github.pg14.linux_amd64/
steampipe_postgres_github.pg14.linux_amd64/steampipe_postgres_github.so
steampipe_postgres_github.pg14.linux_amd64/steampipe_postgres_github.control
steampipe_postgres_github.pg14.linux_amd64/steampipe_postgres_github--1.0.sql
steampipe_postgres_github.pg14.linux_amd64/install.sh
steampipe_postgres_github.pg14.linux_amd64/README.md

Download and extraction completed.

Installing steampipe_postgres_github in /usr/lib/postgresql/14...

Successfully installed steampipe_postgres_github extension!

Files have been copied to:
- Library directory: /usr/lib/postgresql/14/lib
- Extension directory: /usr/share/postgresql/14/extension/  

اکنون طبق معمول، با استفاده از psql یا کلاینت دیگری، معمولاً به عنوان کاربر postgres، به سرور خود متصل شوید. سپس این دستورات را که برای هر پوشش داده خارجی Postgres معمولی است، اجرا کنید. مانند تمام پسوندهای Postgres، شما اینگونه شروع می کنید:

CREATE EXTENSION steampipe_postgres_fdw_github;

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

CREATE SERVER steampipe_github FOREIGN DATA WRAPPER steampipe_postgres_github OPTIONS (config 'token="ghp_..."');

از OPTIONS برای پیکربندی افزونه برای استفاده از نشانه دسترسی GitHub خود استفاده کنید. (متغیرهای محیط استاندارد مورد استفاده برای پیکربندی افزونه Steampipe – در این مورد فقط GITHUB_TOKEN است – اگر آنها را قبل از شروع نمونه Postgres تنظیم کنید، کار خواهند کرد.)

وب 3.0 نیازی به انقلاب بلاک چین ندارد

جدول ارائه شده توسط برنامه افزودنی در یک طرحواره زندگی می کنند، بنابراین تعریف کنید یک:

CREATE SCHEMA github;

اکنون طرح تعریف شده توسط سرور خارجی را به طرح محلی که ایجاد کرده اید وارد کنید:

IMPORT FOREIGN SCHEMA github FROM SERVER steampipe_github INTO github;

اکنون یک پرس و جو را اجرا کنید!

جدول های خارجی ارائه شده توسط برنامه افزودنی در طرحواره github زندگی می کنند، بنابراین به طور پیش فرض به جداولی مانند github.github_my_repository مراجعه خواهید کرد. اگر set search_path = 'github' را انجام دهید، این طرح اختیاری می‌شود و می‌توانید با استفاده از نام‌های جدول نامشخص، پرس‌و‌جوهایی بنویسید.

select
  count(*)
from
  github_my_repository;

 count
-------
   ۴۶۸

اگر مخازن زیادی دارید، اولین اجرای آن کوئری چند ثانیه طول خواهد کشید. اجرای دوم فوراً نتایج را برمی‌گرداند، زیرا برنامه افزودنی شامل یک کش.

و این همه چیز است! اکنون هر افزونه Steampipe یک بسته داده خارجی است که دقیقاً مانند این کار می کند. می‌توانید چندین افزونه را برای پیوستن به APIها بارگیری کنید. . البته شما می توانید به هر یک از این جداول خارجی منبع API با جداول Postgres خود بپیوندید. و برای ذخیره نتایج هر پرس و جو، می توانید create جدول NAME به عنوان یا create materialized view NAME as را به یک پرس و جو اضافه کنید تا نتایج به عنوان جدول یا نما باقی بمانند.

استفاده از افزونه Steampipe به عنوان یک برنامه افزودنی SQLite که جداول مجازی را ارائه می کند

از دانلودهای Steampipe دیدن کنید تا نصب کننده سیستم عامل خود را بیابید و آن را برای دریافت SQLite اجرا کنید توزیع همان افزونه.

$ sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/sqlite.sh)"
Enter the plugin name: github
Enter version (latest): 
Enter location (current directory): 

Downloading steampipe_sqlite_github.linux_amd64.tar.gz...
############################################################################ ۱۰۰.۰%
steampipe_sqlite_github.so

steampipe_sqlite_github.linux_amd64.tar.gz downloaded and extracted successfully at /home/jon/steampipe-sqlite.

تنظیمات اینجاست. اگر می‌خواهید هر بار که sqlite را شروع می‌کنید، آن را اجرا کنید، می‌توانید این کد را در ~/.sqliterc قرار دهید.

.load /home/jon/steampipe-sqlite/steampipe_sqlite_github.so

select steampipe_configure_github('
  token="ghp_..."
');

اکنون می‌توانید همان عبارت بالا را اجرا کنید.

sqlite> select count(*) from github_my_repository;
count(*)
۴۶۸  

تفاوت بین SQL با طعم Postgres و SQLite با طعم چیست؟ مرکز Steampipe دوست شماست! به عنوان مثال، در اینجا انواعی از یک جستجو وجود دارد که به یک فیلد در یک ستون JSON دسترسی دارد تا زبان های مرتبط با مفاهیم شما را جدول بندی کند.

یک کنترل کننده استثنا در ASP.NET Core 8 ایجاد کنید

خلاصه pg و sqlite

در اینجا نیز می‌توانید چندین برنامه افزودنی را بارگیری کنید تا پیوستید API ها. شما می توانید به هر یک از این جداول خارجی منبع API با جداول SQLite خود بپیوندید. و می توانید ایجاد جدول NAME به عنوان را به یک پرس و جو اضافه کنید تا نتایج به عنوان جدول باقی بمانند.

استفاده از افزونه Steampipe به عنوان ابزار صادرات مستقل

از دانلودهای Steampipe دیدن کنید تا نصب کننده سیستم عامل خود را پیدا کنید و آن را اجرا کنید تا صادرات را بدست آورید توزیع یک افزونه مجدداً، ما با استفاده از افزونه GitHub توضیح خواهیم داد.

$ sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/export.sh)"
Enter the plugin name: github
Enter the version (latest): 
Enter location (/usr/local/bin): 
Created temporary directory at /tmp/tmp.48QsUo6CLF.

Downloading steampipe_export_github.linux_amd64.tar.gz...
############################################################################## ۱۰۰.۰%
Deflating downloaded archive
steampipe_export_github
Installing
Applying necessary permissions
Removing downloaded archive
steampipe_export_github was installed successfully to /usr/local/bin
$ steampipe_export_github -h
Export data using the github plugin.

Find detailed usage information including table names, column names, and 
examples at the Steampipe Hub: https://hub.steampipe.io/plugins/turbot/github

Usage:
  steampipe_export_github TABLE_NAME [flags]

Flags:
      --config string       Config file data
  -h, --help                help for steampipe_export_github
      --limit int           Limit data
      --output string       Output format: csv, json or jsonl (default "csv")
      --select strings      Column data to display
      --where stringArray   where clause data

در تصویر اینجا موتور SQL وجود ندارد. این ابزار صرفا یک صادر کننده است. برای صادر کردن تمام مفاهیم خود به یک فایل JSON:

steampipe_export_github github_my_gist --output json > gists.json

برای انتخاب فقط برخی از ستون‌ها و صادرات به فایل CSV:

steampipe_export_github github_my_gist --output csv --select "description,created_at,html_url" > gists.csv

می‌توانید از --limit برای محدود کردن ردیف‌های برگشتی و --where برای فیلتر کردن آنها استفاده کنید، اما بیشتر از این ابزار برای گرفتن سریع و آسان استفاده خواهید کرد. داده‌هایی که در جای دیگری ماساژ می‌دهید، مثلاً در صفحه‌گسترده.

به اکوسیستم پلاگین Steampipe ضربه بزنید

افزونه‌های Steampipe فقط رابط‌های خام برای APIهای اساسی نیستند. آنها از جداول برای مدلسازی آن APIها به روشهای مفید استفاده می کنند. به عنوان مثال، جدول github_my_repository الگوی طراحی را نشان می دهد که به طور مداوم در مجموعه افزونه ها اعمال می شود. از اسناد افزونه GitHub:

اجتناب از قفل شدن فروشنده و تله گرانش داده

سایر پلاگین ها نیز از همین الگو پیروی می کنند. برای مثال، افزونه Microsoft 365 هم microsoft_my_mail_message و هم < را ارائه می‌کند. code>microsoft_mail_message، و افزونه Google Workspace googleworkspace_my_gmail_message< /code> و googleworkspace_gmail. در صورت امکان، افزونه ها نماهای منابع را از دیدگاه یک کاربر تأیید شده یکپارچه می کنند.

در حالی که پلاگین ها معمولا جداول با طرحواره های ثابت ارائه می دهند، همیشه اینطور نیست. طرحواره های پویا، پیاده سازی شده توسط Airtable، CSV، Kubernetes افزونه‌های و Salesforce (در میان سایر موارد)، الگوی کلیدی دیگری هستند. در اینجا یک مثال CSV با استفاده از Postgres FDW مستقل وجود دارد.

IMPORT FOREIGN SCHEMA csv FROM SERVER steampipe_csv INTO csv OPTIONS(config 'paths=["/home/jon/csv"]');

اکنون همه فایل‌های .csv در /home/jon/csv به‌طور خودکار جداول خارجی Postgres خواهند بود. فرض کنید صاحبان معتبر نمونه های EC2 را در فایلی به نام ec2_owner_tags پیگیری می کنید. در اینجا یک پرس و جو در برابر جدول مربوطه وجود دارد.

select * from csv.ec2_owner_tags;
     owner      |            _ctx
----------------+----------------------------
 Pam Beesly     | {"connection_name": "csv"}
 Dwight Schrute | {"connection_name": "csv"}

می‌توانید با افزونه‌های AWS aws_ec2_instance جدول برای گزارش برچسب‌های مالک در نمونه‌های EC2 که در فایل CSV فهرست شده‌اند (یا نیستند).

select 
    ec2.owner,
    case 
        when csv.owner is null then 'false'
        else 'true'
    end as is_listed
from 
    (select distinct tags ->> 'owner' as owner from aws.aws_ec2_instance) ec2
left join 
    csv.ec2_owner_tags csv on ec2.owner = csv.owner;
     owner      | is_listed
----------------+-----------
 Dwight Schrute | true
 Michael Scott  | false

در مجموعه افزونه‌ها، بیش از ۲۳۰۰ جدول طرحواره از پیش تعریف‌شده وجود دارد که می‌توانید به این روش‌ها استفاده کنید، به علاوه تعداد نامحدودی جدول پویا. و افزونه های جدید به طور مداوم توسط Turbot و انجمن منبع باز Steampipe اضافه می شوند. می‌توانید با استفاده از Steampipe یا Turbot Pipes، از پایگاه داده Postgres یا SQLite خودتان، یا مستقیماً از خط فرمان.