استفاده از Steampipe و SQL برای ترکیب جدولهای زمانی Mastodon و پرس و جوها و داشبوردهای نقطهای در تاریخچه ترکیبی تیمها یا گروهها.
به قسمت ۱۷ مجموعه Steampipe+Mastodon خوش آمدید، که در آن یک داستان فرعی جدید را معرفی می کنیم: تاریخچه خط زمانی. تاکنون، نمونههایی که نشان دادهام و بحث کردهام با جدولهای زمانی فعلی کار میکنند. ما کوئریهای SQL را دیدهایم که نتایج تماسهای بیدرنگ به Mastodon API و داشبوردهای Steampipe را که آن نتایج را نمایش میدهند، دریافت کردهایم. اما Steampipe فقط یک سایفون API نیست، بلکه یک پایگاه داده Postgres نیز هست. به این ترتیب از جداول گذرا ایجاد شده توسط بسته بندی داده های خارجی Steampipe و افزونه ها پشتیبانی می کند، اما همچنین به شما امکان می دهد جداول بومی خود را نیز ایجاد کنید. و می توانید از آن جداول بومی برای جمع آوری داده ها از جداول خارجی گذرا استفاده کنید.
از آنجایی که ذخیره و جستجوی دادههای Mastodon یک موضوع بحثبرانگیز در فدیورس است – هیچکدام از ما نمیخواهیم Big Social را خلاصه کنیم – من تا کنون روی جستارهایی تمرکز کردهام که جریان اخیر Mastodon را بررسی میکنند، که چیزهای بیشتری برای نوشتن وجود دارد. اما هیچ کس نباید به خاطر بیاورم جدول زمانی خانه خود را به خاطر بسپارم، بنابراین چند هفته پیش ابزاری ساختم تا آن را به صورت ساعتی بخوانم و موارد جدیدی را به جدول Postgres اضافه کنم.
قبل از اینکه بتوانید ابزارهایی را به جدول اضافه کنید، البته باید آن جدول را ایجاد کنید. در اینجا نحوه ساخت این یکی است.
create table mastodon_home_timeline as select * from mastodon_toot_home limit 200
پس از ایجاد، جدول را می توان با ابزارهای جدیدی مانند آن به روز کرد.
with data as ( select account, -- more -- columns username from mastodon_toot_home limit 200 ) insert into mastodon_home_timeline ( account, -- more -- columns username ) select * from data where id not in ( select t.id from mastodon_home_timeline t )
برای اجرای آن عبارت از crontab، در دستگاهی که Steampipe در آن نصب شده است، آن را به عنوان mastodon_home_timeline.sql
ذخیره کنید، سپس آن را زمان بندی کنید.
۱۵ * * * * cd /home/jon/mastodon; steampipe query mastodon_home_timeline.sql
همین! اکنون تعداد گزارش شده توسط select count(*) از mastodon_home_timeline
هر ساعت در حال افزایش است.
من فقط چند هفته است که در حال جمعآوری ابزارها هستم و هنوز کاوش آن دادهها را شروع نکردهام. وقتی به آنجا رسیدیم خواهیم دید چه اتفاقی می افتد. در عین حال، میخواهم نشان دهم که چگونه چنین کاوشی میتواند یک تمرین تیمی باشد.
یکی از دوستان من، که من او را الویس صدا می کنم، علاقه من به ایجاد ارتباط بین مردم، سرورها و هشتگ ها را به اشتراک می گذارد. او می توانست با استفاده از روشی که در اینجا نشان داده شده است، جدول زمانی خود را ثبت کند. اما از آنجایی که این داده ها را با هم بررسی خواهیم کرد، توافق کردیم که هر دو جدول زمانی خود را جمع آوری کنم. برای فعال کردن آن، او یک رمز Mastodon API (قابل لغو) را به اشتراک گذاشت که من از آن برای پیکربندی Steampipe با اعتبارنامههای هر دو حسابمان استفاده کردهام.
connection "mastodon_social_jon" { plugin = "mastodon" server = "https://mastodon.social" access_token = "..." } connection "mastodon_social_elvis" { plugin = "mastodon" server = "https://mastodon.social" access_token = "..." }
بسته داده خارجی Steampipe هر یک از این اتصالات نامگذاری شده را به طرح Postgres خود تبدیل می کند. اگرچه اتفاقاً سرور خانگی یکسانی را به اشتراک میگذاریم، به هر حال، نیازی به این کار نداریم. تیمی که مانند این همکاری می کند می تواند جدول زمانی را از mastodon.social و hachyderm.io و fosstodon.org و هر سرور دیگر سازگار با Mastodon-API جمع آوری کند. .
(میتوانید با تعریف اتصالات متعدد. Steampipe تماسهای API را به صورت همزمان از طریق اتصالات موازی برقرار میکند.)
با این پیکربندی میتوانم جدول زمانی خود را به این صورت بخوانم.
select * from mastodon_social_jon.mastodon_toot_home limit 200
و الویس هم همینطور است.
select * from mastodon_social_elvis.mastodon_toot_home limit 200
اگر بخواهم هر دو را در زمان واقعی پرس و جو کنم، به عنوان مثال برای شمارش کل ترکیبی، می توانم از SQL UNION استفاده کنم. یا می توانم یک اتصال چتری تعریف کنم که این دو را جمع کند.
connection "all_mastodon" { plugin = "mastodon" type = "aggregator" connections = [ "mastodon_social_jon", "mastodon_social_elvis" ] } connection "mastodon_social_jon" { plugin = "mastodon" server = "https://mastodon.social" access_token = "..." } connection "mastodon_social_elvis" { plugin = "mastodon" server = "https://mastodon.social" access_token = "..." }
اکنون پرس و جو select * from all_mastodon.mastodon_toot_home limit 200
از طرف هر دو حساب – به صورت موازی – تماس های API برقرار می کند و نتایج را با هم ترکیب می کند. هنگامی که URL های به دست آمده را برای پاسخ یا تقویت دنبال می کنیم، این کار را به عنوان هویت فردی انجام می دهیم. و ما قادر خواهیم بود از پرس و جوها و داشبوردهای Steampipe در همان حالت تک کاربره استفاده کنیم. اما همچنین میتوانیم جدولهای زمانی خود را با هم ترکیب کنیم و پرسشها و داشبورد خود را به تاریخچه ترکیبی اشاره کنیم.
آیا جالب خواهد بود؟ مفید است؟ این مسئله بعدا بررسی خواهد شد. فکر میکنم این یکی از آزمایشهایی است که ارزش امتحان کردن را دارد، زیرا فدیورس خودش را مرتب میکند. و من Steampipe را آزمایشگاهی میدانم که میتوان چنین آزمایشهایی را در آن انجام داد. با استفاده از SQL به عنوان انتزاع بر روی APIها، تجمیع اتصالات، و داشبوردها به عنوان کد، همه مواد لازم برای تکرار سریع و با هزینه کم به سمت فضاهای مشترک Mastodon که برای تیم ها یا گروه ها طراحی شده است را دارید. p>
این مجموعه:
- خودمختاری، اندازه بسته، اصطکاک، هواکش و سرعت
- Mastodon، Steampipe و RSS
- مرور fediverse
- یک پایانه بلومبرگ برای Mastodon
- Mastodon UX خود را ایجاد کنید
- لیست ها و افراد موجود در Mastodon
- چند نفر در فید Mastodon من نیز امروز توییت کردند؟
- نشانیهای اینترنتی Mastodon واجد شرایط نمونه
- نمودارهای رابطه ماستودون
- کار با لیست های Mastodon
- تصاویری که مضر تلقی می شوند (گاهی اوقات)
- نقشه برداری فدیورس وسیع تر
- پروتکلها، APIها و قراردادها
- اخبار در fediverse
- نقشه برداری از افراد و برچسب ها در Mastodon
- تجسم نظارت سرور Mastodon
- جدول زمانی Mastodon برای تیم ها
- افزونه Mastodon اکنون در Steampipe Hub در دسترس است
پست های مرتبط
جدول زمانی Mastodon برای تیم ها
جدول زمانی Mastodon برای تیم ها
جدول زمانی Mastodon برای تیم ها