حذف اسناد تکراری

حذف اسناد تکراری در مقیاس بالا: از تطابق دقیق تا اسنادِ «تقریباً» مشابه

حذف داده‌های تکراری یا همون Deduplication تا وقتی که پای داده‌های واقعی وسط نیومده، خیلی ساده به نظر می‌رسه. اگه فقط چند هزار تا متن کوتاه داشته باشید، تقریباً هر روشی جواب میده. اما وقتی صحبت از میلیون‌ها سند طولانی، زبان‌های مختلف، داده‌های کثیف و نیاز به پیدا کردن اسنادی میشه که «خیلی شبیه هم…

async در پایتون

چطور یک پایپ‌لاین دیتای کند رو با Python Async درست کردم – راهنمای عملی

سلام به همه! چند هفته پیش دقیقاً همون چالشی که سد راه هر مهندس داده‌ای میشه، جلوم رو گرفت. پایپ‌لاینی داشتم که باید این کارها رو انجام می‌داد: حدود ۳۰۰۰ تا کتابخانه داشتم. اگر هر کتابخانه فقط ۱ ثانیه طول می‌کشید، کل فرآیند نزدیک ۲ روز طول می‌کشید! جالب اینجاست که CPU تقریباً ۹۹٪ وقتش…

از چالش‌های مهندسی داده: Batch یا Stream?

از چالش‌های مهندسی داده: Batch یا Stream?

یه جایی تو مسیر هر data engineer‌ی هست که هیجان ساختن pipelineها یه‌دفعه با یه سؤال سخت و ساکت روبه‌رو می‌شه: این باید batch باشه یا real-time؟ ظاهراً سؤال فنیه، ولی در واقع یه سؤال فلسفیه. پشتش یه دغدغه‌ی عمیق‌تره:داریم چی رو بهینه می‌کنیم؟ تازگی، سادگی، یا پایداری؟چون نمی‌تونی هر سه رو با هم داشته…

الستیک‌سرچ بخش چهارم: کوئری‌های تحلیلی
|

الستیک‌سرچ بخش چهارم: کوئری‌های تحلیلی

تا اینجا یاد گرفتیم چطور داده‌هامون رو پیدا کنیم، با کوئری‌ها و فیلترها و مخصوصاً bool query آشنا شدیم.اما بعد از اینکه داده‌هامون رو پیدا کردیم چی؟ چطور ازشون تحلیل بگیریم و big picture رو ببینیم؟ اینجاست که قدرت واقعی Elasticsearch خودش رو نشون می‌ده: Aggregationها. اگه کوئری‌ها جواب این سوال رو می‌دن که «کدوم…

لوگو کوئریهای در الستیک سرچ بخش سوم
|

الستیک سرچ بخش سوم: کوئری‌های Bool، هایلایتینگ و صفحه‌بندی

اگه این سری مقاله‌ها رو دنبال کرده باشین، تا الان می‌دونین که: حالا وقتشه بریم سراغ یک بخش مهم و حیاتی: بول کوئری (Bool Query). چرا؟ چون هیچ مشکل جستجوی واقعی‌ای توی دنیای واقعی فقط با یه شرط حل نمی‌شه. کاربرها هم «ربط داشتن» (Relevance) رو می‌خوان و هم «محدودیت» (Restrictions): بول کوئری همون ابزاریه…

الستیک سرچ – بخش دوم: انواع کوئری‌های کاربردی
|

الستیک سرچ – بخش دوم: انواع کوئری‌های کاربردی

در بخش اول این سری درباره پایه‌های کوئری‌نویسی در Elasticsearch صحبت کردم: مدل ذهنی، چرا mapping بهترین دوست شماست و اینکه چه موقع باید از فیلتر استفاده کرد و چه موقع از match. حالا وقتشه وارد جزئیات بشیم و سراغ انواع کوئری‌های کاربردی بریم که توی پروژه‌های واقعی بیشترین استفاده رو دارند. اگر بخش اول…

الستیک سرچ – بخش اول: کوئری‌ها و فیلترها
|

الستیک سرچ – بخش اول: کوئری‌ها و فیلترها

وقتی برای اولین بار با الستیک‌سرچ (Elasticsearch) آشنا شدم، با خودم گفتم: «خب، اینم یه پایگاه داده‌ی دیگه… درسته؟» اما اشتباه می‌کردم. الستیک‌سرچ واقعاً فرق داره. یه جورایی حس ترکیبی از یک موتور جست‌وجو و یه پایگاه داده رو میده. راستش رو بخواین خودمم هنوز خیلی باهاش راحت نیستم 🙂 اما تو این پست که…

کتابخونه‌های موردعلاقه‌ من برای بررسی سریع داده

کتابخونه‌های موردعلاقه‌ من برای بررسی سریع داده

راستشو بخواین، وقتی یه دیتاست تازه میاد جلوی چشمم، دنبال تشریفات و کارای اضافه نیستم. دنبال وضوحم. اون یک ساعت اول، خیلی مهم‌تر از چیزیه که اکثر آدما فکر می‌کنن. باید خیلی سریع بفهمم زمین بازی چه شکلیه—کجا کثیف و به‌هم‌ریخته‌ست، کجا چیزای جالب داره، و اصلاً ارزش کندوکاو بیشتر داره یا نه. یه بار…

انجام پردازش دسته‌ای در apache airflow
|

پردازش دسته‌ای در Apache Airflow – تجربه‌ای در عصر کلان داده

حتما تا حالا اسم پردازش دسته‌ای یا batch processing به گوشتون خورده. تو این پست قرار هست در مورد این موضوع و استفاده از اون در Apache Airflow صحبت کنیم.این روزها با این حجم سرسام‌آور داده که هر لحظه هم بیشتر میشه، یکی از مهم‌ترین مهارت‌ها اینه که بلد باشیم چطور این کوه داده رو به…

انبار داده تمیز شده

چطور یک Data Warehouse شلوغ و به‌هم‌ریخته را مرتب کنیم؟

یکی از مشکلات رایجی که در بسیاری از سازمان‌ها و تیم‌های داده دیده می‌شود، بهم‌ریختگی و عدم انسجام در Data Warehouse است. این مشکل معمولاً به مرور زمان و بر اثر رشد سریع تیم‌ها، تغییر نیازهای تحلیلی، ورود اعضای جدید بدون مستندسازی دقیق، و افزایش پروژه‌های موقتی به‌وجود می‌آید. نتیجه‌اش؟ یک انبار داده با ساختاری…