مهندسی پلتفرم داده
جذب داده، اسکیما، کیفیت داده و ردگیری رویداد، برای تیمهایی که لایهٔ زیر تحلیل باید قابل دفاع باشد.
عدد، پاییندستِ هر چیزی است که بررسی نکردهاید
مدل، داشبورد و گزارش یک خاصیت مشترک دارند: خروجی میدهند، فارغ از اینکه دادهٔ زیرشان درست باشد یا نه. وقتی یک جدول یکسوم سطرهایش را کم دارد، هیچجا استثنا پرتاب نمیشود. خط لوله اجرا میشود، نمودار رسم میشود و جلسه پیش میرود.
به همین دلیل کار پلتفرم داده کمفروخته میشود. شبیه لولهکشی بهنظر میرسد و در واقع همان بخشی است که تعیین میکند به هر چیزی که رویش سوار میشود میشود اعتماد کرد یا نه.
بخشی از آنچه در یک پیکره، در هفت دور، پیدا کردیم:
- ۱۰۳٬۴۲۳ سطر محتوا هرگز نمایه نشده بودند. نمایهٔ جستوجو سالم بهنظر میرسید. یکسوم مطالب را نداشت و هیچ بخشی از سامانه خبر نداشت.
- یک فیلد رتبهبندی کاملاً تخت بود. همهٔ رکوردها یک مقدار اعتبار داشتند، پس معتبرترین منابع پیکره دقیقاً همرتبهٔ کماعتبارترینها بودند.
- حدود هفتاد درصد یک گراف استناد، پیمایش بود. پیوندهای «صفحهٔ قبلی» و «صفحهٔ بعدی» بهعنوان استناد جذب شده بودند. گراف ساختار داشت، آمار داشت، و معنا نداشت.
- اسناد بیصدا بدطبقهبندی شده بودند. پایاننامههای دانشگاهی بهعنوان قانون بارگذاری شده بودند. قانون اساسی یک کشور دیگر بهعنوان قانون داخلی نشسته بود.
هیچکدام خودشان را اعلام نمیکنند. همه با گشتنِ عمدی و با شمارش روی پایگاهدادهٔ زنده پیدا شدند.
«اصلاً کسی این را شمرده؟»
رویکرد ما
جمعآوری را پایدار کن و اصلاح را ارزان. دادهٔ خام یک بار فرود میآید و نگه داشته میشود. هر اصلاح بعدی، تجزیهٔ دوبارهٔ همان چیزی است که روی دیسک هست؛ نه خزش دوباره، نه برونبری دوباره از سامانهای که ممکن است از آن زمان تغییر کرده باشد.
قرنطینه کن، نه حذف. وقتی یالهای استنادی نادرست را پیدا کردیم، علامتشان زدیم بهجای اینکه برداریمشان. بازیابی نادیدهشان میگیرد، تشخیص برگشتپذیر میماند، و روزی که کسی یافته را به چالش بکشد شواهد هنوز سر جایش است. پاکسازیای که شواهد خودش را نابود کند قابل بازبینی نیست.
آماده باش که برنامه را لغو کنی. یکی از آن هفت دور قرار بود رکوردهای تکراری را ادغام کند و نکرد، چون تشخیصِ تکراریبودن غلط از آب درآمد: رکوردهایی که هر ۱۲۴ شناسهشان مشترک بود، تنها در هشت مورد محتوای یکسان داشتند. ادغام، تاریخ واقعی را نابود میکرد تا یک عدد مرتبتر بهنظر برسد. دور پاکسازیای که چیزی حذف نمیکند، دور شکستخورده نیست.
ردگیری را ویژگی تراکنش کن. رکورد یک عمل در همان تراکنش خودِ عمل نوشته میشود. نه بعدش، نه از طریق صف، نه داخل try/except که هشدار لاگ کند. اگر و تنها اگر خودِ عمل ثبت شود ثبت میشود، و خودِ پایگاهداده ویرایش و حذف روی این جدول را رد میکند.
چه چیزی تحویل میگیرید
اسکیما و تاریخچهٔ مهاجرت خواندنی. جذب دادهای که میشود دوباره اجرایش کرد. حسابرسی مکتوب کیفیت داده با شدت و شمارش. پاکسازهایی که اجرای دومشان بیخطر است. ردگیریای که نمیشود بیصدا خاموشش کرد. پشتیبانهایی که با بازگردانی اثبات شدهاند.
کجا انتخاب اشتباهی است
- اگر داده در یک صفحهٔ گسترده جا میشود، از همان استفاده کنید. مهندسی پلتفرم هزینهٔ ثابتی دارد که دادهٔ کوچک هرگز پسش نمیدهد.
- اگر مشکل از سامانهٔ مبدأ است، مبدأ را درست کنید. پاکسازی پاییندستی که ورودی غلط را برای همیشه ترمیم میکند، یک مالیات دائمی است و عیب را از چشم کسانی پنهان میکند که میتوانستند حذفش کنند.
- اگر کسی بودجهٔ رفع را نمیدهد، حسابرسی را سفارش ندهید. چیزهایی پیدا میشود. یافتهٔ مستندشدهٔ بیبودجه، برای سازمان بدتر از یافتهای است که هیچکس ننوشته.
- اگر خطاها از وارد کردن مقدار غلط توسط آدمها میآید، مهندسی مسئله را اندازه میگیرد و حلش نمیکند. آن یک تغییر فرایند است با بودجهٔ آموزش.
- اگر به داشبورد و ابزار حاکمیت داده نیاز دارید که فروشندگان دارند، بخریدشان. ما لایهٔ زیرین را میسازیم، نه رقیبی برای لایهٔ رویین.