<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمد حیدری</title>
        <link>https://virgool.io/feed/@HeydariToday</link>
        <description>مهندس هوش مصنوعی</description>
        <language>fa</language>
        <pubDate>2026-06-12 06:18:42</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2042/avatar/3QKGYW.jpg?height=120&amp;width=120</url>
            <title>محمد حیدری</title>
            <link>https://virgool.io/@HeydariToday</link>
        </image>

                    <item>
                <title>خیال نکن اسم هوش پُشتِته هر چی دلت بخواد میتونی به خورد ما بدی، ارزیابی RAG با RAGAS</title>
                <link>https://virgool.io/@HeydariToday/%D8%AE%DB%8C%D8%A7%D9%84-%D9%86%DA%A9%D9%86-%D8%A7%D8%B3%D9%85-%D9%87%D9%88%D8%B4-%D9%BE%D9%8F%D8%B4%D8%AA%D9%90%D8%AA%D9%87-%D9%87%D8%B1-%DA%86%DB%8C-%D8%AF%D9%84%D8%AA-%D8%A8%D8%AE%D9%88%D8%A7%D8%AF-%D9%85%DB%8C%D8%AA%D9%88%D9%86%DB%8C-%D8%A8%D9%87-%D8%AE%D9%88%D8%B1%D8%AF-%D9%85%D8%A7-%D8%A8%D8%AF%DB%8C-%D8%A7%D8%B1%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-rag-%D8%A8%D8%A7-ragas-nridkyhejpol</link>
                <description>مقدمهاول از همه بیایم با هم بررسی کنیم ببینیم این RAG خودش چیه که RAGASش چی باشه :-):-):-)مرغ چیه که کله پاچش چی باشه، چه ربطی داشت :-)اما خود RAG یعنی چی ؟خیلی خیلی خلاصه شو بخوام بگم RAG سیستمیه که در اون:یوزر سوال مدنظرشو می پرسه که بصورت کوئری میره سمت لایه Retriever، بعدش Context مدنظر بازیابی میشه و پاس داده میشه سمت LLM Prompt و در نهایت Response برمیگرده سمت کاربر.البته خیلی خلاصه گفتم و ستون فقرات معماری RAG سه لایه Retrieval, Augmentation و Generation قرار داره که در جای خودش مفصل راجع بهشون صحبت می کنم براتون رفقا. و اما RAGAS ببین خیلی ساده:RAGAS = ابزار ارزیابی سیستم‌های RAG به حساب میآد.بالاخره باید یه حساب کتابی روی دیتایی که جنریت می کنه باشه مگه نه؟ نمیشه که الابختکی، مملکت قانون داره!اما RAGAS میاد بررسی می‌کنه:Retriever (بخش سرچ) خوب کار می‌کنه؟LLM (بخش پاسخگویی) چقدر درست جواب می‌ده؟و نوآوری این معماری در اینهبدون اینکه نیاز به دیتای لیبل‌خورده سنگین داشته باشیمتریک‌هاRAGAS چندتا معیار خیلی مهم داره که کل سیستم رو می‌سنجه:1️⃣ Faithfulness (صداقت / توهم نزدن)جواب LLM چقدر به context وفاداره؟یعنی:آیا جواب از خودش چیزی ساخته؟ خدایی نکرده دچار hallucination نشده باشه، بچم توهم نزده باشه بره قاطی مرغا :-)یا واقعاً از متنی که خودمون به سیستم دادیم برای تولید جواب استفاده کرده؟مثال:Context:محمدتقی بهجت 2 شهریور 1295 به دنیا آمدجواب خوب:2 شهریور 1295 : درستجواب بد:22 ممهر 1299 : مدل توهم زده و از خودش دَر وَکِردِه (بَرَرِه ای گفتم :-)چطوری حساب میشه؟جواب رو می‌شکنه به جمله‌های کوچیکهر جمله رو چک می‌کنه:آیا از context قابل استنتاجه؟درصد جمله‌های درست = امتیازخروجی هم بین 0 تا 1Answer Relevancy (جواب تولید شده به سوال مرتبط باشه)جواب اصلاً به سوال ربط داره یا نه؟مثال:سوال:ایران کجاست و پایتختش چیه؟جواب ضعیف:ایران در آسیا است (نیمه‌کاره)جواب خوب:ایران در غرب آسیا است و تهران پایتخت آن استچطوری حساب میشه؟این قسمت خیلی جالبهاز روی جواب، چندتا سوال مصنوعی ساخته میشه (با LLM)بعد این سوال‌ها با سوال اصلی مقایسه میشن (embedding similarity)اگر شبیه بودن: یعنی جواب مرتبطهContext Recall (چیزی جا نمونده؟)Retriever همه اطلاعات لازم رو آورده یا نه؟یعنی:چیزی که برای جواب لازم بودهواقعاً تو context بوده یا نهچطوری حساب میشه؟یه جواب مرجع و صحیح داریم که بهش میگیم ground truth همون رفرنس خودمون.اون رو تبدیل می‌کنه به چند claim یا همون ادعاچک می‌کنه آیا همه این claimها تو context هستن؟اگر یه چیز مهم جا مونده باشه، recall میاد پایینContext Precision (چقدر آت و آشغال آوردی؟)از بین contextهایی که آوردی، چندتاش واقعاً مفیدن؟یعنی:noise داری یا نه (دیتای غیر مرتبط  و به درد نخور رو بهش میگیم نویزی)irrelevant chunk آوردی یا نهمثال:اگر 5 تا متن آوردی:2 تا مفید و 3 تا بی‌ربط، در نتیجه precision پاییناما چطوری حساب میشه؟برای هر chunk بررسی می‌کنه:آیا به جواب ربط داره یا نهبعد میانگین می‌گیرهجمع‌بندی متریک‌ها متریک چی رو می‌سنجه:Faithfulnessآیا جواب دروغ گفته؟Answer Relevancyآیا جواب به سوال ربط داره؟Context Recallچیزی جا نیفتاده؟Context Precisionچیز اضافه آورده؟نکته خیلی مهماین 4 تا در واقع 2 تا لایه دارن:لایه RetrieverContext RecallContext Precisionلایه Generator که LLM حضور داره FaithfulnessAnswer Relevancyیعنی RAGAS کل pipeline رو end-to-end بررسی می‌کنه⚙️ مثال کد (ساده‌سازی شده)from ragas import evaluate

score = evaluate(
    dataset,
    metrics=[faithfulness, answer_correctness]
)دیتاست شامل:questionanswercontextsground_truthبرداشت عملی فرض کن میخوای RAG برای شرکت تون بسازی، اینطوری استفاده میشه:اگر Faithfulness پایینه:LLM داره hallucinate می‌کنهراهکارش:prompt بهترcitation forcingchain-of-thought محدوداگر Context Recall پایینه:retriever چیزای مهم رو پیدا نکردهراهکارشembedding بهترchunking بهترtop-k بیشتراگر Context Precision پایینه:noise زیادهراهکارش:rerankerfilteringhybrid searchاگر Answer Relevancy پایینه:جواب پرت میدهراهکارش:prompt engineeringinstruction tuningامیدوارم این مقاله براتون سودمند واقع شده باشه، سوالی داشتید در خدمتتون هستم و خوشحال میشم بتونم کمکی باشم براتون در این مسیر طولانی LLMها. </description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Tue, 09 Jun 2026 16:48:58 +0330</pubDate>
            </item>
                    <item>
                <title>با vLLM: پمپاژ خونی تازه در LLMها برای افزایش سرعت پاسخ‌دهی و توان پردازشی</title>
                <link>https://virgool.io/@HeydariToday/%D8%A8%D8%A7-vllm-%D9%BE%D9%85%D9%BE%D8%A7%DA%98-%D8%AE%D9%88%D9%86%DB%8C-%D8%AA%D8%A7%D8%B2%D9%87-%D8%AF%D8%B1-llm%D9%87%D8%A7-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%B3%D8%B1%D8%B9%D8%AA-%D9%BE%D8%A7%D8%B3%D8%AE-%D8%AF%D9%87%DB%8C-%D9%88-%D8%AA%D9%88%D8%A7%D9%86-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4%DB%8C-zzffhtjfzcor</link>
                <description>vLLM چیه اصلاً؟vLLM یه کتابخونه‌ی اوپن‌سورسه که برای اجرای سریع و بهینه‌ی مدل‌های زبانی بزرگ (LLMها) ساخته شده. خلاصه بگم، خیلی خوبه برای وقتی که می‌خوای مدل رو توی محیط پروداکشن و نه صرفا تستی اجرا کنی و تعداد درخواست‌ها هم زیاده.مشکل چی بود که vLLM اومد حلش کنه؟مدل‌های زبانی معمولاً خیلی سنگینن، هم از نظر پردازش، هم مصرف حافظه. وقتی چندتا کاربر همزمان درخواست بدن، اوضاع بدتر هم میشه روش‌های قدیمی معمولاً کند بودن و حتی از سخت‌افزار هم خوب استفاده نمی‌کردن.جادوی اصلی vLLM چیه؟ Paged Attentionاینجا بخش جذاب ماجراستPaged Attention ایده‌شو از حافظه مجازی سیستم‌عامل‌ها گرفته. به این صورت که میاد مدیریت حافظه‌ی اَتِنشِن رو خیلی بهینه‌تر می‌کنه.به جای اینکه کل KV cache (همون key/valueها) رو تو یه فضای بزرگ و یک‌تکه نگه داره، میاد اونو تیکه‌تیکه (page) می‌کنه.ساده‌تر بگم:حافظه رو به بلوک‌های کوچیک تقسیم می‌کنه (مثلاً چند تا توکن در هر بلاک)یه جدول سبک نگه می‌داره که بگه هر داده کجا ذخیره شدهموقع اجرا، دقیق میره همون تیکه‌هایی که لازم داره رو برمی‌دارهمثل این می‌مونه که به جای اینکه کل کتابخونه رو بگردی، دقیق بدونی هر کتاب کدوم قفسه‌ست.نتیجه چی میشه؟چون این تیکه‌ها لازم نیست کنار هم باشن:می‌تونه هزاران درخواست رو همزمان هندل کنهحتی اگه سرعت تولید جواب‌ها فرق داشته باشهاستفاده از GPU هم خیلی بهینه‌تر میشهگیت هاب vLLM با بیش از 81k استار ...نصب vLLM (مثال روی مک M1)اول یه فولدر و محیط مجازی بساز:mkdir vllm_trials
cd vllm_trials

python3 -m venv venv
source venv/bin/activateبعد نصب:pip install vllmاجرا کردن یه مدلمثلاً مدل Phi-1.5:vllm serve microsoft/phi-1_5 --trust-remote-codeاین دستور:یه API لوکال مثل OpenAI بالا میارهروی آدرس لوکال هاسن: پورت 8000اون فلگ--trust-remote-codeهم لازمه چون بعضی مدل‌ها کد اختصاصی دارن.نکته:(برای GPUهای NVIDIA بهینه شده و روی Mac محدودیت داره)استفاده با Python (مثل OpenAI API)from openai import OpenAI

client = OpenAI(
    api_key=&quot;EMPTY&quot;,
    base_url=&quot;localhost:8000/v1&quot;,
)

completion = client.completions.create(
    model=&quot;microsoft/phi-1_5&quot;,
    prompt=&quot;San Francisco is a&quot;
)

print(completion)استفاده مستقیم از خود vLLMfrom vllm import LLM, SamplingParams

llm = LLM(model=&quot;microsoft/phi-1_5&quot;)

prompts = [
    &quot;Hello, my name is&quot;,
    &quot;The capital of France is&quot;,
]

params = SamplingParams(temperature=0.8, top_p=0.95)

outputs = llm.generate(prompts, params)

for out in outputs:
    print(out.outputs[0].text)اتصال به LangChainfrom langchain_community.llms import VLLM

llm = VLLM(
    model=&quot;microsoft/phi-1_5&quot;,
    trust_remote_code=True,
    temperature=0.8,
)

print(llm.invoke(&quot;What is the capital of France?&quot;))تصویر از وی ال ال ام دات اِی آییه کم ریز تر بشیم رفقا:مشکل اصلی LLMها کجاست؟ (یه نگاه دقیق‌تر)قبلش گفتیم مدل‌ها سنگینن، ولی اینجا دقیق‌تر می‌گه کجا گلوگاهه:1. هدر رفتن حافظه (Memory Fragmentation)مدل‌ها برای هر توکن یه KV cache نگه می‌دارن، که خیلی زود حافظه GPU رو می‌ترکونهمشکل اینجاست:یه عالمه فضا رزرو میشه ولی کامل استفاده نمی‌شهیه جاهایی هم فضای خالی ریز ریز ایجاد میشه که به درد هیچ درخواست جدیدی نمی‌خورهنتیجه:هزینه سخت‌افزار بالاتعداد درخواست همزمان کم2. batching ضعیف (Static Batching)روش‌های قدیمی اینطوری بودن:یه batch درست می‌کننصبر می‌کنن همه تموم بشنولی مشکل:خروجی‌ها طول‌های مختلف دارنیکی زود تموم میشه، یکی دیرپس GPU می‌شینه بیکار تا اون آخری تموم بشهنتیجه:تاخیر بالاتعداد پردازش پاییننوآوری دوم vLLM چیه؟ Continuous Batchingمکانیزم کارش اینه، به جای اینکه صبر کنه کل batch تموم شه:چی کار می‌کنه؟هر لحظه وضعیت درخواست‌ها رو چک می‌کنههر جا جا خالی شد، سریع با درخواست جدید پرش می‌کنهخیلی ساده:مثل صف بانک نیست که همه با هم بیان جلوبیشتر شبیه باجه‌های آزاد سوپرمارکتهنتیجه‌ش چیه؟GPU همیشه در حال کاره (بیکار نمی‌مونه)سرعت پاسخ خیلی بهتر میشهتعداد درخواست در ثانیه چند برابر میشه (حتی تا 24 برابر تو بعضی تست‌ها)امکانات محشر vLLMاین کتابخونه فقط دو تا ایده نیست، کلی ابزار هم داره:ساپورت چند GPU و حتی چند سروراگه پروژه‌ات بزرگه:می‌تونی مدل رو بین چند GPU پخش کنیحتی بین چند ماشین (کلاسترینگ)Quantization (سبک کردن مدل)با روش‌هایی مثل:INT8FP8GPTQدر نتیجهحافظه کمتر مصرف میشهسرعت بالاتر میرهتوکن استریمینگخروجی رو دونه‌دونه میده (مثل ChatGPT)تجربه کاربری خیلی بهترحس realtime بودنپریفیکس کشینگاگه چندتا درخواست اولشون شبیه باشه:مثلاً:برام از هوش مصنوعی بگوبرام از یادگیری ماشین بگوقسمت مشترک فقط یه بار محاسبه میشهLoRA داینامیکبرای مدل‌های فاین‌تیون شده:راحت می‌تونی چندتا LoRA رو مدیریت کنیبدون اینکه کل مدل رو دوباره لود کنیکرنل‌های بهینه CUDAاز تکنیک‌هایی مثل:Flash AttentionFlash Inferاستفاده می‌کنه برای سرعت بیشتر روی GPUمعماری vLLM خیلی خلاصهچندتا بخش مهم داره:Scheduler : تصمیم می‌گیره کی چی اجرا شهEngineCore : مغز اصلی اجراModel Runner : اجرای مدل روی GPUKV Cache Manager : مدیریت حافظهنکته مهم:کارهای CPU و GPU جدا شدن: سرعت بالاترحالت API با استریممی‌تونی جواب رو تیکه‌تیکه بگیری:stream=Trueهمون حس تایپ شدن جواب مثل چت‌بات‌هاکی اصلاً سراغ vLLM بریم؟این خیلی مهمه 👇وقتی:کاربر زیاد داری (high concurrency)سرعت جواب مهمه (low latency)می‌خوای هزینه GPU کمتر شهمی‌خوای مدل رو خودت host کنی (نه API خارجی)اجرای vLLM در محیط‌های آفلاین و سازمانییکی از ویژگی‌های خیلی کاربردی vLLM اینه که می‌تونه توی محیط‌های کاملاً آفلاین (Air-Gapped) اجرا بشه؛ یعنی هیچ نیازی به اینترنت نداره. این موضوع برای سازمان‌هایی مثل بانک‌ها، مخابرات، صنایع دفاعی یا نهادهای دولتی خیلی مهمه، چون داده‌ها نباید از شبکه داخلی خارج بشن.برای راه‌اندازی vLLM تو این شرایط، معمولاً روی یه سیستم که اینترنت داره، همه پکیج‌ها و وابستگی‌ها دانلود می‌شن و بعد منتقل می‌شن به سیستم مقصد. بعدش می‌تونی بدون هیچ اتصال اینترنتی، vLLM رو کامل نصب و اجرا کنی.تو این مدل از استقرار، خود مدل‌ها هم به‌صورت لوکال (روی دیسک) اجرا می‌شن و هیچ وابستگی‌ای به سرویس‌های بیرونی ندارن. برای همین، این روش یکی از بهترین گزینه‌ها برای محیط‌های امن و سازمانیه.یه نکته مهم هم اینه که برای جلوگیری از هر درخواست ناخواسته به اینترنت (مثلاً به Hugging Face)، می‌تونی حالت آفلاین رو فعال کنی تا همه‌چیز فقط از روی فایل‌های محلی لود بشه.تست و بررسی درست کار کردن سیستمبعد از اینکه vLLM رو راه انداختی، می‌تونی با یه درخواست ساده API (مثلاً با curl) چک کنی که همه‌چیز درست کار می‌کنه یا نه. این تست کمک می‌کنه مطمئن بشی:API در دسترسهمدل درست لود شدهinference بدون مشکل اجرا میشهکل pipeline (حتی برای ورودی‌های چندرسانه‌ای) سالمهپشتیبانی از ورودی‌های چندرسانه‌ایvLLM فقط محدود به متن نیست و از مدل‌های چندرسانه‌ای (Multimodal) هم پشتیبانی می‌کنه. یعنی می‌تونی همزمان متن و تصویر بهش بدی و خروجی متنی بگیری. این قابلیت توی کارهایی مثل تحلیل تصویر، تولید کپشن یا ساخت سیستم‌های هوشمند ترکیبی خیلی به درد می‌خوره.نکته مهم درباره GPU و CUDAبرای اینکه بهترین performance رو بگیری، vLLM عملاً برای اجرا روی GPUهای NVIDIA ساخته شده. پس خیلی مهمه که نسخه CUDA با درایور کارت گرافیکت سازگار باشهمثلاً سری
12.x. این موضوع مستقیم روی سرعت و پایداری سیستم تاثیر می‌ذاره.در vLLM خیلی از پیچیدگی‌ها پشت صحنه مدیریت می‌شنیکی از مزیت‌های مهم vLLM اینه که خیلی از کارهای پیچیده مثل batching، زمان‌بندی درخواست‌ها و مدیریت GPU رو خودش انجام می‌ده.در نتیجه، لازم نیست درگیر جزئیات سطح پایین بشی و می‌تونی بیشتر روی طراحی پرامپت و منطق خروجی تمرکز کنی.کنترل نحوه تولید خروجی با SamplingParamsدر vLLM می‌تونی رفتار تولید متن رو با پارامترهایی مثل temperature و top-p کنترل کنی.temperature مشخص می‌کنه خروجی چقدر خلاقانه یا تصادفی باشه(عدد پایین: خروجی دقیق‌تر، عدد بالا : متنوع‌تر)top-p مشخص می‌کنه مدل از بین چه محدوده‌ای از کلمات انتخاب کنه(مثلاً 0.9 یعنی فقط محتمل‌ترین گزینه‌ها در نظر گرفته می‌شن)این تنظیمات بهت کمک می‌کنن بسته به کاربرد، خروجی رو دقیق‌تر یا خلاقانه‌تر کنی.vLLM فقط مدل نیست، یه runtime کامل هم هستوقتی با vLLM کار می‌کنی، در واقع فقط مدل رو لود نمی‌کنی؛بلکه یه runtime کامل inference هم داری که شامل:مدیریت درخواست‌هاbatching خودکاراجرای بهینه روی GPUمی‌شه.برای همین، استفاده ازش خیلی ساده‌تر از اینه که خودت بخوای این سیستم‌ها رو از صفر پیاده‌سازی کنی.جمع‌بندیvLLM خیلی به درد می‌خوره وقتی:مدل بزرگ داریدرخواست‌ها زیادهمی‌خوای سریع و بهینه سرویس بدیالانم تبدیل شده به یکی از ابزارهای محبوب برای deploy کردن LLMها در مقیاس بزرگ.</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Mon, 25 May 2026 18:10:36 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی با Log-Structured Merge Tree یا LSM Tree</title>
                <link>https://virgool.io/@HeydariToday/lsmtree-rngv4eclv1sk</link>
                <description>سلام رفقاامید که دلتون شاد باشهوسط این اوضاع آشفته و نابسامان که خیلی ها عزیزان شون رو تو جنگ از دست دادن و آسیب های جسمی و روحی دیدن، برای من نوشتن تو ویرگول نوعی مسکن و آرام بخش محسوب میشه، شاید بتونم با سرگرم کردن خودم پیرامون مبحث مورد علاقه کاریم یعنی دیتا، یه اثر مثبت هرچند کوچیک به اندازه سر سوزن بزارم، امید که روزای خوب بیاد برای کشورمون و با شادی و نشاط کنار کسایی که دوسشون داریم روزمون رو شب کنیم و شبمون رو روزبه امید اون روز ...من محمدم، یه علاقه مند به ترکیب مهندسی داده و هوش مصنوعی :-)تو این نوشتار میخوام Log-Structured Merge Tree رو بهتون معرفی کنم که در دیتابیس محشر کلیک هاوس، ایده‌ی ایندکس خلوت و ساختار MergeTree از مدل‌های log-structured مثل LSM Tree الهام گرفته شده تا نوشتن‌های حجیم سریع و پردازش تحلیلی بهینه بشه.صحبت از کلیک هاوس شد، من اینجا یه رپوزیتوری آموزش محور ازش درست کردم تو گیت هاب و دارم توسعه اش میدم، اگر دوست داشتید می تونید یه نگاهی بهش بندازید :-)تصویر از بلاگ بایت بایت گو دات کاماما دیگه بریم سراغ اصل کارمون:Log-Structured Merge Tree مشهور به LSM Tree یا ساختار داده‌ای مبتنی بر لاگ برای ادغام و ذخیره‌سازی داده‌ها چیه و چرا این‌قدر مهمه؟اگه با دیتابیس‌های مدرن مثل Cassandra، RocksDB یا LevelDB کار کرده باشید، احتمالاً اسم LSM Tree یا Log-Structured Merge Tree به گوشتون خورده. این ساختار داده یکی از مهم‌ترین ایده‌ها در طراحی دیتابیس‌های امروزی هستش، مخصوصاً وقتی حجم نوشتن روی دیتابیس مون خیلی زیاد باشه.در واقع، LSM Tree یه روش هوشمندانه برای ذخیره‌سازی داده‌هامون هستش که تلاش می‌کنه هزینه‌ی نوشتن روی دیسک رو تا حد ممکن کاهش بده و در عوض، همه‌چیز رو به شکل دسته‌ای و بهینه انجام بده.خب این از مقدمه، حالا بریم سراغ تعریف مبحث مون:LSM Tree دقیقاً چیه؟Log-Structured Merge Tree یک ساختار داده‌ی ترکیبیه که برای مدیریت کلید-مقدارها (Key-Value) طراحی شده و هدف اصلیش، بهینه‌سازی عملیات نوشتن روی دیتابیس در حجم بالا است.ایده‌ی اصلی ساده ست:به جای اینکه هر داده همون لحظه روی دیسک بشینه (که بسیار کند و پرهزینه ست)، داده‌ها اول تو حافظه جمع می‌شن و بعد به‌صورت دسته‌ای روی دیسک منتقل می‌شناگه با فریم ورک اسپارک آشنایی داشته باشید احتمال یاد بچ پراسسینگ افتادین که البته اونجا میکروبچ هم داشتیمایده‌ی اصلی: دو سطح ذخیره‌سازیLSM Tree معمولاً از دو بخش اصلی تشکیل میشه:1. حافظه (Memory Component)داده‌ها ابتدا وارد RAM می‌شنمعمولاً ساختار مرتب مثل Skip List یا Tree دارنبسیار سریع برای نوشتن و جستجو2. دیسک (Disk Component)داده‌ها به صورت مرتب و دسته‌ای ذخیره می‌شنبه فایل‌های مرتب (Sorted Runs) تقسیم می‌شنوقتی حافظه پر بشه، داده‌ها یک‌جا به دیسک منتقل و با داده‌های قبلی ادغام (Merge) می‌شنتصویر از دی بی فرام زیرو دات کامچرا LSM Tree سریعه؟راز سرعت LSM Tree تو یه چیزه:نوشتن ترتیبی (Sequential Write) به جای نوشتن تصادفی (Random Write)دیسک‌ها (خصوصاً HDDها) تو نوشتن‌های تصادفی خیلی کُندن، اما تو نوشتن ترتیبی بسیار سریع‌ترن. LSM Tree میاد و دقیقاً از همین موضوع استفاده می‌کنه.عملیات اصلی در LSM Tree1. عملیات نوشتن (Write)وقتی دیتای جدید وارد می‌شه (خوش اومدی داداش، صفا آوردی، دیروز دوست، امروز آشنا :-)اول تو حافظه ذخیره می‌شهیک لاگ (Write-Ahead Log) برای جلوگیری از از دست رفتن داده ثبت می‌شهوقتی حافظه پر شد، داده‌ها به دیسک flush می‌شندر نهایت با داده‌های قبلی merge می‌شننکته مهم:حذف‌ها هم واقعی نیستن، بلکه با یک علامت (tombstone) ثبت می‌شن2. جستجوی یک مقدار (Point Lookup)اما برای پیدا کردن یک کلید:اول حافظه بررسی می‌شهاگر نبود، لایه‌های دیسک یکی‌یکی چک می‌شنمعمولاً از Bloom Filter برای سریع رد کردن فایل‌های نامرتبط استفاده می‌شهنتیجه:اگه کلید موجود باشه: خیلی سریع پیدا می‌شهاگه وجود نداشته باشه: ممکنه چند لایه بررسی شه3. کوئری بازه‌ای (Range Query)برای گرفتن بازه‌ای از داده‌ها:همه لایه‌ها باید بررسی شننتایج با هم merge شنداده‌های تکراری حذف و آخرین نسخه نگه داشته می‌شهاین نوع عملیات معمولاً از point lookup کندتره، مخصوصاً اگر دیتامون اسپارس باشهمزایا و معایب LSM Treeمزایاسرعت مشحر در writeمناسب برای دیتای حجیم و real-timeاستفاده بهینه از دیسکمناسب برای سیستم‌های لاگ و تحلیلیمعایبread ممکن است کندتر بشهنیاز به mergeهای دوره‌ای (compaction)مصرف CPU و I/O در زمان مِرجِ داده‌هاکجا از LSM Tree استفاده می‌شه؟LSM Tree پایه‌ی بسیاری از دیتابیس‌های مدرنه، مثل:ClickHouseCassandraLevelDBRocksDBHBaseهر جایی که نوشتن زیاد و مداوم داریم، این ساختار عالی عمل می‌کنه.جمع‌بندیLSM Tree یه سولوشن هوشمندانه برای یکی از بزرگ‌ترین مشکلات دیتابیس‌هاست،اونم اینکه: چطور سریع بنویسیم بدون اینکه دیسک را نابود کنیم؟با تبدیل نوشتن‌های پراکنده به نوشتن‌های بَچ، این ساختار تونسته تعادل خوبی بین سرعت، مقیاس‌پذیری و کارایی ایجاد کنه.مرسی مقاله رو خوندینسوالی بود من در خدمتم رفقا :-)</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 22 May 2026 19:03:43 +0330</pubDate>
            </item>
                    <item>
                <title>آشنایی با Zstandard؛ الگوریتم فشرده‌سازی سریع و قدرتمند</title>
                <link>https://virgool.io/@HeydariToday/zstandard-oviaxqqvtk7y-oviaxqqvtk7y</link>
                <description>سلام رفقاامید که دلتون شاد باشهوسط این اوضاع آشفته و نابسامان که خیلی ها عزیزان شون رو تو جنگ از دست دادن و آسیب های جسمی و روحی دیدن، برای من نوشتن تو ویرگول نوعی مسکن و آرام بخش محسوب میشه، شاید بتونم با سرگرم کردن خودم پیرامون مبحث مورد علاقه کاریم یعنی دیتا، یه اثر مثبت هرچند کوچیک به اندازه سر سوزن بزارم، امید که روزای خوب بیاد برای کشورمون و با شادی و نشاط کنار کسایی که دوسشون داریم روزمون رو شب کنیم و شبمون رو روزبه امید اون روز ...من محمدم، یه علاقه مند به ترکیب مهندسی داده و هوش مصنوعی :-)تو این نوشتار میخوام Zstandard رو بهتون معرفی کنم که نقش بسزایی در فشرده سازی داده ها تو دیتابیس محشر کلیک هاوس داشته.صحبت از کلیک هاوس شد، من اینجا یه رپوزیتوری آموزش محور ازش درست کردم تو گیت هاب و دارم توسعه اش میدم، اگر دوست داشتید می تونید یه نگاهی بهش بندازید :-)اول از همه بریم با هم ببینیم Zstandard چی هستش؟Zstandard (یا به اختصار Zstd) یک الگوریتم فشرده‌سازی مدرن و بسیار سریعه که در عین ارائه‌ی سرعت بالا، نسبت فشرده‌سازی قابل‌توجهی هم داره. این الگوریتم توسط مهندسای ماهر فیسبوک (Meta) توسعه داده شده و به‌صورت متن‌باز (Open Source) با لایسنس BSD منتشر شده.فرمت Zstandard به‌طور رسمی استاندارد شده و در قالب RFC 8878 توسط IETF منتشر شده؛ یعنی از نظر پایداری و سازگاری، کاملاً قابل اعتماده.ویژگی مهم Zstd اینه که میتونه بین سرعت و میزان فشرده‌سازی تعادل ایجاد کنه. شما می‌تونید بسته به نیازتون، سرعت بیشتر یا فشرده‌سازی قوی‌تر رو انتخاب کنید.عملکرد و بنچمارک‌هاZstandard در مقایسه با سایر الگوریتم‌های محبوب مثل zlib، Brotli و LZ4 عملکرد بسیار خوبی از خودش نشون داده.نکات مهم از نتایج بنچمارک:در حالت پیش‌فرض، Zstd نسبت فشرده‌سازی بالاتری نسبت به zlib دارهسرعت فشرده‌سازیش چند برابر zlib هستشسرعت Decompression (باز کردن فایل) بسیار بالا و تقریباً ثابتهحالت‌های --fast امکان افزایش سرعت رو با کمی کاهش در فشرده‌سازی فراهم می‌کنهبه‌طور خلاصه:اگر سرعت مهمه: حالت‌های fastاگر حجم مهمه: سطح‌های بالاتر compressionیک ویژگی جالب اینه که بر خلاف بسیاری از الگوریتم‌ها، سرعت decompression تقریباً مستقل از سطح فشرده‌سازی باقی می‌مونه.چالش فشرده‌سازی داده‌های کوچکفشرده‌سازی داده‌های کوچک همیشه یک چالش بوده. چرا؟چون الگوریتم‌های فشرده‌سازی معمولاً از داده‌های قبلی برای یادگیری الگوها استفاده می‌کنن. اما وقتی داده کم باشه، این «هیستوری» وجود نداره.راه‌حل Zstandard: Dictionary CompressionZstd برای حل این مشکل از مفهومی به نام دیکشنری (Dictionary) استفاده می‌کنه :-)اما چطوری؟چند تا نمونه از داده‌های مشابه (مثلاً فایل‌های یه کیلوبایتی) به الگوریتم داده می‌شهالگوریتم از این نمونه‌ها یک «دیکشنری» می‌سازهاین دیکشنری هنگام فشرده‌سازی و باز کردن داده‌ها استفاده می‌شهخب فایده اش؟افزایش چشمگیر نسبت فشرده‌سازی تو داده‌های کوچکحتی افزایش سرعت در برخی موارداما نکته مهم:هرچی دیکشنری به نوع داده خاص‌تر باشه، عملکردش بهتر میشه. دیکشنری عمومی تقریباً وجود نداره.بحث خاص و تخصص شد یاد حشمت فردوس افتادم که مدام نوه اش رو صدا میزد متخصصآره جونم، دیکشنری باید تخصصی باشه برای متخصصا :-)API ساده تا پیشرفتهیکی از نقاط قوت Zstandard، طراحی APIشه.برای شروع: توابع ساده با تنظیمات پیش‌فرضبرای متخصصا: کنترل کامل روی پارامترهااین یعنی:جونیورا مثل من سریع شروع می‌کنندحرفه‌ای‌ها مثل شما می‌توانند بهینه‌سازی عمیق انجام دهندپشتیبانی از زبان‌های مختلفZstandard فقط محدود به زبان C نیست. این الگوریتم در بسیاری از زبان‌ها در دسترسه، از جمله:PythonRustJavaJavaScript / Node.jsGoC#PHPRubySwiftو ده‌ها زبان دیگراین موضوع باعث شده Zstd به‌راحتی در انواع پروژه‌ها قابل استفاده باشه.کاربردهای Zstandard در دنیای واقعیZstd امروزه تو طیف گسترده‌ای از سیستم‌ها استفاده می‌شه:سیستم‌عامل‌ها و ابزارهاLinux (مثل Ubuntu، Arch)ابزارهای بسته‌بندی مثل tar و rpmدیتابیس‌هاMySQLPostgreSQLMongoDBRedisوب و شبکهnginxcurlDjangoسایر کاربردهابازی‌ها (مثل League of Legends)موتورهای گرافیکیسیستم‌های ذخیره‌سازیجمع‌بندیZstandard را میشه یکی از بهترین انتخاب‌های امروزی برای فشرده‌سازی دونست، چون:سرعت بسیار بالاسبت فشرده‌سازی عالیانعطاف‌پذیری در تنظیماتقابلیت دیکشنری برای دیتای کوچیکپشتیبانی گسترده در اکوسیستم‌هااگر مثل من در حال حاضر مشغول طراحی سیستم‌هایی هستید که با حجم زیادی از داده سروکار دارند (مثل لاگ‌ها، APIها، دیتابیس‌ها یا سیستم‌های RAG)، Zstd قطعاً گزینه‌ای هستش که باید جدی بررسی‌اش کنید.مرسی که مقاله رو خوندین :-)سوالی بود من در خدمتم</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Thu, 21 May 2026 17:00:40 +0330</pubDate>
            </item>
                    <item>
                <title>? چطور از طریق لینکدین برای شرکت‌های خارجی دورکاری کنیم و درآمد دلاری داشته باشیم؟</title>
                <link>https://virgool.io/@HeydariToday/%DA%86%D8%B7%D9%88%D8%B1-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%D9%84%DB%8C%D9%86%DA%A9%D8%AF%DB%8C%D9%86-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B4%D8%B1%DA%A9%D8%AA-%D9%87%D8%A7%DB%8C-%D8%AE%D8%A7%D8%B1%D8%AC%DB%8C-%D8%AF%D9%88%D8%B1%DA%A9%D8%A7%D8%B1%DB%8C-%DA%A9%D9%86%DB%8C%D9%85-%D9%88-%D8%AF%D8%B1%D8%A2%D9%85%D8%AF-%D8%AF%D9%84%D8%A7%D8%B1%DB%8C-%D8%AF%D8%A7%D8%B4%D8%AA%D9%87-%D8%A8%D8%A7%D8%B4%DB%8C%D9%85-j4y8pqyercjx</link>
                <description>? اگه تو این شرایط اقتصادی نابسامان مملکت، دنبال درآمد دلاری هستید مشاهده این ویدیو رو از دست ندید. تو این ویدیو قرار هست براتون جزئیات کار رو بیشتر بگم.https://www.youtube.com/watch?v=r_6gzZwKx?لینک مشاهده ویدیو در کانال #یوتیوب:https://www.youtube.com/watch?v=r_6gzZwKxRI</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Sun, 04 Sep 2022 19:41:13 +0430</pubDate>
            </item>
                    <item>
                <title>دکترا بخونم یا نه؟ بررسی چالش های تحصیل دکتری در ایران</title>
                <link>https://virgool.io/@HeydariToday/%D8%AF%DA%A9%D8%AA%D8%B1%D8%A7-%D8%A8%D8%AE%D9%88%D9%86%D9%85-%DB%8C%D8%A7-%D9%86%D9%87-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%DA%86%D8%A7%D9%84%D8%B4-%D9%87%D8%A7%DB%8C-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84-%D8%AF%DA%A9%D8%AA%D8%B1%DB%8C-%D8%AF%D8%B1-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-b90mcdrxubgq</link>
                <description>بررسی چالش های تحصیل دکتری در ایران https://youtu.be/3JBAZ9Ci43Uهمونطور که مطلع هستید شهریورماه هستش و نتایج کنکور دکتری اومده. خیلی از عزیزان هم بعد از تلاش و کوشش هفتگی، ماهانه یا سالانه، شاداب و خندان، اسکرین شات قبولی شون رو در جاهای مختلف حتی لینکدین منتشر می کنن. نکته ای که پیش میاد این هستش که بعضا خیلی از این عزیزان، دقیقا مطلع نیستند دارن تو چه مسیری قدم میزارن و از محدودیت ها، دردسرها، چالش ها و فشارهای روانی مسیر دکتری بی اطلاع هستند. خیلی ها با وجود کسب رتبه خوب و قبولی تو دانشگاه های برتر و حتی بالعکس تو ادامه تحصیل دکتری مردد هستند و هنوز نمی دونند، اپلای کنند یا بزنن تو بیزینس. خیلی ها صرفا تلاش کردند کنکور قبول بشن تا سربازی رو بپیچونن و هیچ علاقه ای به پژوهش و تحصیلات عالیه ندارند. خیلی ها صرفا دکتری شرکت کردند تا بصورت موقت فرصت اپلای گیر بیارن انصراف بدن و از کشور خارج بشن. خیلی ها دکتری شرکت کردند روزانه قبول بشن خوابگاه داشته باشن تا بتونن کنار تحصیل برن سر کار و شب جای خواب و استراحت داشته باشند. تو این ویدیو میخوام به بررسی چالش های ادامه تحصیل در مقطع دکتری در ایران بپردازم که سوال خیلی از شما بوده و هست . این ویدئو بهتون کمک میکنه تا بتونید تصمیم بهتری برای ادامه تحصیلتون بگیرید اینکه بعد از فارغ_التحصیلی تو مقطع ارشد، برای ادامه تحصیل بهتره برید سراغ کسب و کار و درآمدزایی یا اینکه دکتری رو ادامه بدید. تولید کننده این ویدیو با دانشجویان و فارغ التحصیلان دکتری زیادی حشر و نشر داشته است و از نزدیک شاهد فشارها، استرس ها و مشکلات تحصیل دکتری بوده است. لینک مشاهده ویدیو در یوتیوب https://youtu.be/3JBAZ9Ci43U کانال های ارتباطی مدرسه بیگ دیتا: پلتفرم آموزش آنلاین هوش مصنوعی وب سایتhttps://bigdataworld.ir کانال تلگرامhttp://t.me/BigDataSchool کانال اینستاگرامhttp://Instagram.com/BigData_School</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Sat, 03 Sep 2022 01:36:57 +0430</pubDate>
            </item>
                    <item>
                <title>دانشمند داده یا دیتاساینتیست چه ابزارهایی رو باید بلد باشه؟</title>
                <link>https://virgool.io/@HeydariToday/%D8%AF%D8%A7%D9%86%D8%B4%D9%85%D9%86%D8%AF-%D8%AF%D8%A7%D8%AF%D9%87-%DB%8C%D8%A7-%D8%AF%DB%8C%D8%AA%D8%A7%D8%B3%D8%A7%DB%8C%D9%86%D8%AA%DB%8C%D8%B3%D8%AA-%DA%86%D9%87-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C%DB%8C-%D8%B1%D9%88-%D8%A8%D8%A7%DB%8C%D8%AF-%D8%A8%D9%84%D8%AF-%D8%A8%D8%A7%D8%B4%D9%87-c2hpd6pcqf0b</link>
                <description>? تو این ویدیو میخوام براتون به تفصیل بگم یه دانشمند داده، باید کار با چه ابزارهایی رو حتما بلد باشه.?‍? برای مشاهده ویدیوهای جدید حتما کانال رو Subscribe کنید، اگه ویدیو مورد پسندتون واقع شد ویدیو رو Like کنید و سوالی هم مدنظرتون بود Comment بزارید تا در اولین فرصت پاسخ بدم.? لینک مشاهده ویدیو در کانال #یوتیوب:https://www.youtube.com/watch?v=7Y1saOQqMtc⏳ مدت زمان: 13:17</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Thu, 01 Sep 2022 19:33:46 +0430</pubDate>
            </item>
                    <item>
                <title>? معرفی کانال های یوتیوب ایرانی و فارسی زبان آموزش برنامه نویسی و نرم افزار (قسمت اول)</title>
                <link>https://virgool.io/@HeydariToday/-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%A9%D8%A7%D9%86%D8%A7%D9%84-%D9%87%D8%A7%DB%8C-%DB%8C%D9%88%D8%AA%DB%8C%D9%88%D8%A8-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D9%88-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%88-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%28%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84%29-sahtierin0uz</link>
                <description>? دوستان عزیزم، تو این ویدیو اومدم برای اولین بار، به معرفی کانال های یوتیوب ایرانی و فارسی زبان آموزش برنامه نویسی و نرم افزار پرداختم.? معرفی کانال های یوتیوب ایرانی و فارسی زبان آموزش برنامه نویسی و نرم افزار (قسمت اول)لینک مشاهده ویدیو در کانال #یوتیوب:https://www.youtube.com/watch?v=ugt4s7SOCmkمدت زمان ویدیو: 25:05برای مشاهده ویدیوهای جدید حتما کانال رو Subscribe کنید، اگه ویدیو مورد پسندتون واقع شد ویدیو رو Like کنید و سوالی هم مدنظرتون بود Comment بزارید تا در اولین فرصت پاسخ بدم.</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Thu, 01 Sep 2022 19:30:21 +0430</pubDate>
            </item>
                    <item>
                <title>بهترین دانشگاه های اروپا برای ادامه تحصیل در رشته های مهندسی کامپیوتر و فناوری اطلاعات</title>
                <link>https://virgool.io/applymag/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D8%AF%D8%A7%D9%86%D8%B4%DA%AF%D8%A7%D9%87-%D9%87%D8%A7%DB%8C-%D8%A7%D8%B1%D9%88%D9%BE%D8%A7-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D8%AF%D8%A7%D9%85%D9%87-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84-%D8%AF%D8%B1-%D8%B1%D8%B4%D8%AA%D9%87-%D9%87%D8%A7%DB%8C-%D9%85%D9%87%D9%86%D8%AF%D8%B3%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D9%88-%D9%81%D9%86%D8%A7%D9%88%D8%B1%DB%8C-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-uv86fxxt61gb</link>
                <description>دوستان عزیزم، تو این ویدیو اومدم براتون بهترین دانشگاه های اروپا برای ادامه تحصیل در رشته های مهندسی کامپیوتر و فناوری اطلاعات رو جمع آوری کردم. امیدوارم براتون مفید واقع بشه.لینک مشاهده ویدیو در کانال یوتیوب: https://youtu.be/1eX8iJhhx-w </description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 11 Jun 2021 14:58:33 +0430</pubDate>
            </item>
                    <item>
                <title>گلچین بهترین وب سایت های دنیا برای اپلای تحصیلی در مقطع ارشد و دکتری و پسادکتری</title>
                <link>https://virgool.io/@HeydariToday/%DA%AF%D9%84%DA%86%DB%8C%D9%86-%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86-%D9%88%D8%A8-%D8%B3%D8%A7%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C-%D8%AF%D9%86%DB%8C%D8%A7-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D9%BE%D9%84%D8%A7%DB%8C-%D8%AA%D8%AD%D8%B5%DB%8C%D9%84%DB%8C-%D8%AF%D8%B1-%D9%85%D9%82%D8%B7%D8%B9-%D8%A7%D8%B1%D8%B4%D8%AF-%D9%88-%D8%AF%DA%A9%D8%AA%D8%B1%DB%8C-%D9%88-%D9%BE%D8%B3%D8%A7%D8%AF%DA%A9%D8%AA%D8%B1%DB%8C-zqrc1xobymjy</link>
                <description>دوستان عزیزم، تو این ویدیو اومدم براتون گلچین بهترین وب سایت های دنیا برای اپلای تحصیلی در مقطع ارشد و دکتری و پسادکتری رو جمع آوری کردم. امیدوارم براتون مفید واقع بشه.لینک مشاهده ویدیو در یوتیوب:  https://youtu.be/-IxvMF85NM8 </description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 11 Jun 2021 14:54:24 +0430</pubDate>
            </item>
                    <item>
                <title>مصورسازی آمار تولد تعداد پسران و دختران در شهرهای ایران طی سال های  1344 تا 1397</title>
                <link>https://virgool.io/@HeydariToday/%D9%85%D8%B5%D9%88%D8%B1%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A2%D9%85%D8%A7%D8%B1-%D8%AA%D9%88%D9%84%D8%AF-%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF-%D9%BE%D8%B3%D8%B1%D8%A7%D9%86-%D9%88-%D8%AF%D8%AE%D8%AA%D8%B1%D8%A7%D9%86-%D8%AF%D8%B1-%D8%B4%D9%87%D8%B1%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-%D8%B7%DB%8C-%D8%B3%D8%A7%D9%84-%D9%87%D8%A7%DB%8C-1344-%D8%AA%D8%A7-1397-nu1oehvumcig</link>
                <description>تو این بخش از مصورسازی اومدم، آمار تولد تعداد پسران و دختران در شهرهای ایران طی سال های  1344 تا 1397 رو براتون آماده کردم. امیدوارم نرخ پیری در ایران بیش از این زیاد نشه. لینک مشاهده ویدیو در کانال #یوتیوب:  https://youtu.be/G3bcM30DCOk </description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 11 Jun 2021 01:54:12 +0430</pubDate>
            </item>
                    <item>
                <title>مصورسازی  گرم ترین کشورهای دنیا در بازه سالهای 1996 تا 2020</title>
                <link>https://virgool.io/@HeydariToday/%D9%85%D8%B5%D9%88%D8%B1%D8%B3%D8%A7%D8%B2%DB%8C-%DA%AF%D8%B1%D9%85-%D8%AA%D8%B1%DB%8C%D9%86-%DA%A9%D8%B4%D9%88%D8%B1%D9%87%D8%A7%DB%8C-%D8%AF%D9%86%DB%8C%D8%A7-%D8%AF%D8%B1-%D8%A8%D8%A7%D8%B2%D9%87-%D8%B3%D8%A7%D9%84%D9%87%D8%A7%DB%8C-1996-%D8%AA%D8%A7-2020-xgukmgdc9gwm</link>
                <description>تو این مصورسازی اومدم براتون گرم ترین کشورهای دنیا در بازه سالهای 1996 تا 2020 رو  بر اساس درجه فارنهایت نشون دادم. خدا رو شکر که ایران جزو گرم ترین ها نیست وگرنه پوستمون کنده می شد. خدا به داد این کشورها برسه واقعا. لینک مشاهده ویدیو در کانال #یوتیوب: https://youtu.be/3tHhiR95sYg</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 11 Jun 2021 01:50:45 +0430</pubDate>
            </item>
                    <item>
                <title>مصورسازی نرخ بيكاری جوانان ٢٤ - ١٥ ساله بر حسب مناطق شهری و روستایی</title>
                <link>https://virgool.io/@HeydariToday/%D8%A2%D9%85%D8%A7%D8%B1-%D8%AF%D8%B1%D8%B5%D8%AF%DB%8C-%D9%86%D8%B1%D8%AE-%D8%A8%D9%8A%D9%83%D8%A7%D8%B1%DB%8C-%D8%AC%D9%88%D8%A7%D9%86%D8%A7%D9%86-%D9%A2%D9%A4-%D9%A1%D9%A5-%D8%B3%D8%A7%D9%84%D9%87-%D8%A8%D8%B1-%D8%AD%D8%B3%D8%A8-%D9%85%D9%86%D8%A7%D8%B7%D9%82-%D8%B4%D9%87%D8%B1%DB%8C-%D9%88-%D8%B1%D9%88%D8%B3%D8%AA%D8%A7%DB%8C%DB%8C-oa9wwkvpt3za</link>
                <description>دوستان تو این ویدیو اومدم براتون آمار درصدی نرخ بيكاری جوانان ٢٤ - ١٥ ساله بر حسب مناطق شهری و روستایی رو به صورت گرافیکی از سال 1385 تا سال 1398، نشون دادم. امیدوارم یه زور تمامی این درصدها بیکاری صفر باشه.لینک مشاهده ویدیو در کانال یوتیوب: https://youtu.be/dLfGCKhh9YA </description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 11 Jun 2021 01:46:40 +0430</pubDate>
            </item>
                    <item>
                <title>مصورسازی پرفروش ترین فیلم های سینمای ایران و طول زمان حفظ رکورد از سال 1364 تا 1398</title>
                <link>https://virgool.io/@HeydariToday/%D9%BE%D8%B1%D9%81%D8%B1%D9%88%D8%B4-%D8%AA%D8%B1%DB%8C%D9%86-%D9%81%DB%8C%D9%84%D9%85-%D9%87%D8%A7%DB%8C-%D8%B3%DB%8C%D9%86%D9%85%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-%D9%88-%D8%B7%D9%88%D9%84-%D8%B2%D9%85%D8%A7%D9%86-%D8%AD%D9%81%D8%B8-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%A7%D8%B2-%D8%B3%D8%A7%D9%84-1364-%D8%AA%D8%A7-1398-tz4yl4kyjmt7</link>
                <description>دوستان تو این ویدیو اومدم پرفروش ترین فیلم های سینمای ایران و طول زمان حفظ رکورد از سال 1364 تا 1398 رو براتون قرار دادم.لینک مشاهده ویدیو در کانال یوتیوب: فخhttps://youtu.be/cxdLa5kBySk</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 11 Jun 2021 01:42:29 +0430</pubDate>
            </item>
                    <item>
                <title>مصورسازی آماری تعداد ازدواج و طلاق ثبت شده در ایران طی سالهای 1358 تا 1398</title>
                <link>https://virgool.io/@HeydariToday/%D8%A2%D9%85%D8%A7%D8%B1-%D8%B1%D8%B3%D9%85%DB%8C-%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF-%D8%A7%D8%B2%D8%AF%D9%88%D8%A7%D8%AC-%D9%88-%D8%B7%D9%84%D8%A7%D9%82-%D8%AB%D8%A8%D8%AA-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-%D8%B7%DB%8C-%D8%B3%D8%A7%D9%84%D9%87%D8%A7%DB%8C-1358-%D8%AA%D8%A7-1398-c4dhjlvnyqrl</link>
                <description>تو این بخش از مصورسازی اومدم، آمار رسمی تعداد ازدواج و طلاق ثبت شده در ایران طی سالهای 1358 تا 1398 رو براتون آماده کردم.لینک مشاهده ویدیو در کانال #یوتیوب:  https://youtu.be/m3tF4wTd5d0 </description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 11 Jun 2021 01:39:43 +0430</pubDate>
            </item>
                    <item>
                <title>آمار مشارکت مردم در انتخابات‌های ریاست‌_جمهوری ایران</title>
                <link>https://virgool.io/@HeydariToday/%D8%A2%D9%85%D8%A7%D8%B1-%D9%85%D8%B4%D8%A7%D8%B1%DA%A9%D8%AA-%D9%85%D8%B1%D8%AF%D9%85-%D8%AF%D8%B1-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8%D8%A7%D8%AA-%D9%87%D8%A7%DB%8C-%D8%B1%DB%8C%D8%A7%D8%B3%D8%AA-%D8%AC%D9%85%D9%87%D9%88%D8%B1%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-je8gribvsyfy</link>
                <description>تو این بخش از #مصورسازی اومدم، آمار مشارکت مردم در #انتخابات‌های #ریاست‌_جمهوری #ایران، طی سال های 1358 تا 1396 رو براتون نشون دادم.لینک مشاهده ویدیو در کانال #یوتیوب:  https://youtu.be/mYHsFVxLYoo </description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Fri, 11 Jun 2021 01:35:43 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی و بررسی فاز میانی Combine در مُدل Map Reduce</title>
                <link>https://virgool.io/WordofData/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D9%88-%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D9%81%D8%A7%D8%B2-%D9%85%DB%8C%D8%A7%D9%86%DB%8C-combine-%D8%AF%D8%B1-%D9%85%D9%8F%D8%AF%D9%84-map-reduce-c5175rlisgwi</link>
                <description>مراحل مدل Map Reduce در دو گره موجود در کلاستر به صورت توزیع شدهدر این مقاله که در دنیای بیگ دیتا  منتشر شده است با هم با فاز میانی Combine در مُدل برنامه نویسی Map Reduce آشنا میشیم و می بینیم کجاها میشه از فاز Combine استفاده کرد و کجاها بهتره از این فاز استفاده نکنیم.آشنایی با Combinerکامباینر، که از آن به Semi-reducer یا Mini-Reducer هم تعبیر می گردد، یک کلاس اختیاری است که عملیات پذیرش ورودی از کلاس مپ و سپس پاس دادن زوج کلیدمقدار خروجی به کلاس ردیوسر را بر عهده دارد.وظیفه اصلی یک کامباینر، خلاصه سازی رکوردهای خروجی کلاس مپ با کلید یکسان است. خروجی کامباینر(مجموعه ای از کلیدمقدارها) بر بستر شبکه، به عنوان ورودی به کلاس ردیوسر ارسال می گردد. نکته مهم اینکه نوع ورودی زوج کلیدمقدار و نوع خروجی زوج کلیدمقدار می بایست یکسان باشند.مزیت کلدی کامباینر اینست که به تفکیک داده ها در چندین گروه مجزی برای فاز ردیوس کمک می کند، چرا که در اینصورت پردازش را بیش از پیش آسان تر می کند.اما قرار نیست همیشه و همه جا این گام استفاده شود. سوالی که مطرح می شود این است که فاز کامباین چه زمانی استفاده نمی شود؟همیشه حضور Combiner ضروری نیستمثال موردی: توییتر. یک فایل دیتای حجیم شامل توییت های کاربران ایران با هشتگ اینترنت در HDFS داریم. هدف این است سری زمانی تعداد تکرار کلمه قطعی در بازه های زمانی مختلف توسط کاربران بررسی شود. فاز Map برای هر Node تعداد تکرار کلمه ضرر را تاریخ های مختلف مشخص می کند. اگر در مرحله Combine تعداد تکرار در تاریخ های مختلف با هم ترکیب گردد رابطه زمانی دیتاها حذف می شود. در این تیپ مسائل نیازی به فاز کامباین نداریم.نکته ای که باید مدنظر قرارگیرد اینست که کامباینر تضمین نمی کند که همیشه روی همه دیتا اعمال شود.بهتر هست کامباینر برای توابعی نظیر SUM استفاده شود، اما توابعی هم هستند که فاز کامباین نمی تواند همیشه روی آنها اعمال گردند، نظیر AVG.وقتی نیازی نیست که دیتا روی دیسک ریخته شود مپ ردیوس فاز کامباین را اعمال نمی کند.وقتی که نوع ورودی دیتاهای زوج کلیدمقدار یکسان نباشند، مپ ردیوس فاز کامباین را اعمال نمی کند.در صورت عدم استفاده از کامباین شاهد افت محسوس ترافیک انتقال دیتا در شبکه هستیم.نکته : اگر کامباینر برای تسک مدنظرمان Set شود، هدوپ خود تصمیم می گیرد با توجه به دیتای موردنظر، کامباینر را اجرا کند یا خیر!فاز کامباین چه زمانی استفاده می شود؟اما حالا که موارد عدم استفاده فاز کامباین را ذکر کردیم، باید ذکر کنیم فاز کامباین چه زمانی استفاده می شود؟کامباین تنها زمانی می تواند استفاده شود که تابع ردیوس هم بصورت commutative ظاهر می شود و هم بصورت associative.Commutative: ترتیب عملوندها تاثیری در نتیجه عبارت ندارند. مثال : 10+11+12=12+11+10Associative: ترتیب عملوندها تاثیری در نتیجه عبارت ندارند. مثال: (10+11)+12=12+(11+10)مورد دیگر زمانی که فاز مپ دیتاهای فوق العاده حجیمی را در برابر کلیدهای یکسان تولید می کند.(شمارش کلمات)نکته: برای کاهش ترافیک شبکه ، توصیه می شود تا کامباین را Set کنیم.وقتی که نوع ورودی دیتاهای زوج کلیدمقدار یکسان باشند، مپ ردیوس فاز کامباین را اعمال می کند.هنگامی که Buffer نیاز به Flush داشته باشد، کامباین همیشه فراخوانی می گردد.نکته مهم: توابع کامباین از پیش نوشته شده نیستند و توسط توسعه دهنده ها نوشته می شوند.</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Thu, 09 Apr 2020 19:05:14 +0430</pubDate>
            </item>
                    <item>
                <title>تحلیل و پردازش گراف با GraphFrames</title>
                <link>https://virgool.io/WordofData/%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%D9%88-%D9%BE%D8%B1%D8%AF%D8%A7%D8%B2%D8%B4-%DA%AF%D8%B1%D8%A7%D9%81-%D8%A8%D8%A7-graphframes-g9wokvgp0iih</link>
                <description>سلام دوستان عزیزم. من این مقاله رو در دنیای بیگ دیتا هم نشر دادم که اونجا هم می تونین راجع به مباحث بیگ دیتا بیشتر مطالعه کنید، چون اینجا امکان داره تصاویر به درستی بارگزاری نشده باشن و اونجا کامل و جامع موجود هستند.آشنایی با GraphFramesگراف فریم ها هم مشابه گراف ایکس فرآیند تحلیل و پردازش گراف های حجیم رو انجام میدن اما چون بر مبنای DataFrames هستند بر خلاف گراف ایکس که مستقیما سوار بر RDD هست یه سری مزایا دارن:پشتیبانی از رابط های Python, Java &amp; Scalaامکان ایجاد پرس و جوهای قدرتمند بر بستر Spark SQL و DataFramesامکان ذخیره و بارگزاری گراف: گراف فریم ها از دیتاسورس های دیتافریم به طور کامل پشتیبانی می کنن. به همین خاطر ما می تونیم گرافمون رو با استفاده از فرمت های مختلف مثل Parquet, JSON, CSV  بخونیم و بنویسیم.در گراف فریم گره ها و یال ها در قالب دیتافریم ذخیره میشن و ما می تونیم هر نوع داده ای که داریم رو روی هر گره و یالی ذخیره کنیم.ساخت گراف فریمما می تونیم گراف فریم رو بر اساس دیتافریم رئوس و یالهایی که داریم بسازیم. پس شد:یه Vertex DataFrame: دیتافریمی هست که یه ستون به نام “id” داره که unique IDs رو به ازای هر راس در گراف تو خودش داره.یه Edge DataFrame: دیتافریمی هست که باید دو تا ستون “src”و “dst” داشته باشن. منظور از این دو تا ستون هم مبدا و مقصد گره مون هست که قراره توی گرافمون Traverse کنه.یه گراف حتی می تونه از یه single DataFrame ساخته باشه که فقط لیست یال ها (edge information.) رو تو خودش داره.تو این بخش می خوایم یه گراف فریم از دیتافریم ها رئوس و یالهامون بسازیم.قطعه کد اسکالاimport org.graphframes.GraphFrameval v = sqlContext.createDataFrame(List((&quot;a&quot;, &quot;Alice&quot;, 34),(&quot;b&quot;, &quot;Bob&quot;, 36),(&quot;c&quot;, &quot;Charlie&quot;, 30),(&quot;d&quot;, &quot;David&quot;, 29),(&quot;e&quot;, &quot;Esther&quot;, 32),(&quot;f&quot;, &quot;Fanny&quot;, 36),(&quot;g&quot;, &quot;Gabby&quot;, 60))).toDF(&quot;id&quot;, &quot;name&quot;, &quot;age&quot;)val e = sqlContext.createDataFrame(List((&quot;a&quot;, &quot;b&quot;, &quot;friend&quot;),(&quot;b&quot;, &quot;c&quot;, &quot;follow&quot;),(&quot;c&quot;, &quot;b&quot;, &quot;follow&quot;),(&quot;f&quot;, &quot;c&quot;, &quot;follow&quot;),(&quot;e&quot;, &quot;f&quot;, &quot;follow&quot;),(&quot;e&quot;, &quot;d&quot;, &quot;friend&quot;),(&quot;d&quot;, &quot;a&quot;, &quot;friend&quot;),(&quot;a&quot;, &quot;e&quot;, &quot;friend&quot;))).toDF(&quot;src&quot;, &quot;dst&quot;, &quot;relationship&quot;)val g = GraphFrame(v, e)قطعه کد پایتونv = sqlContext.createDataFrame([(&quot;a&quot;, &quot;Alice&quot;, 34),(&quot;b&quot;, &quot;Bob&quot;, 36),(&quot;c&quot;, &quot;Charlie&quot;, 30),(&quot;d&quot;, &quot;David&quot;, 29),(&quot;e&quot;, &quot;Esther&quot;, 32),(&quot;f&quot;, &quot;Fanny&quot;, 36),(&quot;g&quot;, &quot;Gabby&quot;, 60)], [&quot;id&quot;, &quot;name&quot;, &quot;age&quot;])e = sqlContext.createDataFrame([(&quot;a&quot;, &quot;b&quot;, &quot;friend&quot;),(&quot;b&quot;, &quot;c&quot;, &quot;follow&quot;),(&quot;c&quot;, &quot;b&quot;, &quot;follow&quot;),(&quot;f&quot;, &quot;c&quot;, &quot;follow&quot;),(&quot;e&quot;, &quot;f&quot;, &quot;follow&quot;),(&quot;e&quot;, &quot;d&quot;, &quot;friend&quot;),(&quot;d&quot;, &quot;a&quot;, &quot;friend&quot;),(&quot;a&quot;, &quot;e&quot;, &quot;friend&quot;)], [&quot;src&quot;, &quot;dst&quot;, &quot;relationship&quot;])g = GraphFrame(v, e)این گراف فریمی که ساختیم تو GraphFrames package به این صورت در دسترس هستfrom graphframes.examples import Graphsg = Graphs(sqlContext).friends()کوئری روی گراف با طعم SQL ?برای من که چند سالی هست روی گراف کار میکنم این یه خبر خوبه. از یه طرف خیلی از ما خیلی وقت هست با SQL کار کردیم و حالا می تونیم روی مسائل گراف ازش استفاده کنیم. نیازی نیست مثل Neo4j بریم حتما Cypher کار کنیم هرچند اونم بجاش ارزشمنده و قدرتمند.قطعه کد اسکالاimport org.graphframes.{examples,GraphFrame}val g: GraphFrame = examples.Graphs.friendsg.vertices.show()// +--+-------+---+// |id|   name|age|// +--+-------+---+// | a|  Alice| 34|// | b|    Bob| 36|// | c|Charlie| 30|// | d|  David| 29|// | e| Esther| 32|// | f|  Fanny| 36|// | g|  Gabby| 60|// +--+-------+---+g.edges.show()// +---+---+------------+// |src|dst|relationship|// +---+---+------------+// |  a|  b|      friend|// |  b|  c|      follow|// |  c|  b|      follow|// |  f|  c|      follow|// |  e|  f|      follow|// |  e|  d|      friend|// |  d|  a|      friend|// |  a|  e|      friend|// +---+---+------------+import org.apache.spark.sql.DataFrameval vertexInDegrees: DataFrame = g.inDegreesg.vertices.groupBy().min(&quot;age&quot;).show()val numFollows = g.edges.filter(&quot;relationship = &#x27;follow&#x27;&quot;).count()قطعه کد پایتونfrom graphframes.examples import Graphsg = Graphs(sqlContext).friends()g.vertices.show()# +--+-------+---+# |id|   name|age|# +--+-------+---+# | a|  Alice| 34|# | b|    Bob| 36|# | c|Charlie| 30|# | d|  David| 29|# | e| Esther| 32|# | f|  Fanny| 36|# | g|  Gabby| 60|# +--+-------+---+g.edges.show()# +---+---+------------+# |src|dst|relationship|# +---+---+------------+# |  a|  b|      friend|# |  b|  c|      follow|# |  c|  b|      follow|# |  f|  c|      follow|# |  e|  f|      follow|# |  e|  d|      friend|# |  d|  a|      friend|# |  a|  e|      friend|# +---+---+------------+vertexInDegrees = g.inDegreesg.vertices.groupBy().min(&quot;age&quot;).show()numFollows = g.edges.filter(&quot;relationship = &#x27;follow&#x27;&quot;).count()زیرگرافتو گراف ایکس برای پیدا کردن یه زیرگراف از متد subgraph() کمک می گرفتیم به این شکل(یال، گره مبدا، گره مقصد).اما گراف فریم میاد خیلی قوی تر عمل می کنه و برای پیدا کردن یه زیرگراف، موتیف یابی + فیلترهای دیتافریم رو با هم ترکیب می کنه. ما از سه تا متد کمکی واسه پیدا کردن زیرگراف بهره می بریم:filterVertices(condition), filterEdges(condition), dropIsolatedVertices.که به ترتیب میان رئوس مدنظر، یالهای مدنظر رو انتخاب می کنن و فیلتر می زنن روش و رئوس ایزوله رو حذف میکنن. تو بخش اول یه زیرگراف ساده رو با استفاده از vertex and edge filters پیدا می کنیم به این شکلقطعه کد اسکالاimport org.graphframes.{examples,GraphFrame}val g: GraphFrame = examples.Graphs.friends// Select subgraph of users older than 30, and relationships of type &quot;friend&quot;.// Drop isolated vertices (users) which are not contained in any edges (relationships).val g1 = g.filterVertices(&quot;age &gt; 30&quot;).filterEdges(&quot;relationship = &#x27;friend&#x27;&quot;).dropIsolatedVertices()یک مثال شبکه های اجتماعیما یه سری کاربر داریم که با هم در ارتباطن که مشخصه. یه سری سوالات مثل:کدوم کاربر تو شبکه از همه تاثیرگذار تره؟کاربر الف و ب همدیگرو نمی شناسن اما امکانش هست اونا رو با هم آشنا کنی؟ https://databricks.com/wp-content/uploads/2016/03/social-network-graph-diagram.png این تیپ سوالاتو می شه با گراف بهش رسید و جواب داد.گراف فریم هم می تونه دیتاها رو در قالب گره و یال ذخیره کنه که تو مثال ما هر کاربر نام و سن بخصوص داره و تو شبکه ها با هم در ارتباطن https://databricks.com/wp-content/uploads/2016/03/social-network-graph-verticies.png  https://databricks.com/wp-content/uploads/2016/03/social-network-graph-edges.png کوئری های سادهبا گراف فریم، کوئری زدن خیلی آسونه (به لطف دیتافریم). چرا که گره و یال تو دیتافریم ذخیره میشن و خیلی کوئری هامون فقط کوئری های (SQL) دیتافریم هستند. با هم یه مثال ساده رو بررسی می کنیم و می خوایم بدونیم کدوم کاربر سنش بیشتر 35 هست؟ می تونیم روی گره های گراف اینطوری کوئری بزنیم:graph.vertices.filter(&quot;age&gt;35&quot;)یه مثال دیگه و اون اینکه کدوم کاربرها حداقل 2 تا Follower دارن؟ ما می تونیم مجموع درجات ورودی رو با هم ترکیب کنیم و به جواب برسیم.graph.inDegrees.filter(&quot;inDegree&gt;=2&quot;)کوئری های متوسطگراف فریم همه الگوریتم های موجود در گراف ایکس رو روی Scala, Java, Python ساپورت میکنه. خروجی یه الگوریتم روی گراف یا دیتافریم هستش یا گراف فریم. بعنوان مثال ما میخوایم بدونیم مهمترین شخص تو شبکه مون کیه؟ میآیم از الگوریتم PageRank معروف گوگل کمک می گیریم. خروجی ما هست:results = g.pageRank(resetProbability=0.15, maxIter=10)display(results.vertices)https://databricks.com/wp-content/uploads/2016/03/PageRank-results.pngالگوریتم هایی که گراف فریم ازشون پشتیبانی میکنهالگوریتم PageRank: واسه شناسایی گره های مهم تو گرافالگوریتمShortest paths: پیدا کردن کوتاه ترین مسیرالگوریتمConnected Components: گروه بندی راس ها به زیرگروه های متصلالگوریتمStrongly Connected Components: سافت ورژن مورد شماره 3الگوریتمTriangle Count: واسه شمارش تعداد دفعاتی که راس عضو سه تایی هاست.الگوریتمLabel Propagation Algorithm – LPA واسه تشخیص اجتماعاتمقایسه GraphFrames و GraphXجداول گره ها و یال ها در گراف ایکس https://spark.apache.org/docs/latest/img/property_graph.png مصورسازی فرآیند موتیف مچینگ در گراف https://image.slidesharecdn.com/taleoftwographalgorithms-sparksummit2017europe-180109235531/95/tale-of-two-graph-frameworks-graph-frames-and-tinkerpop-40-638.jpg?cb=1515542196 در ادامهمی تونید پکیج گراف فریم رو از اینجا دانلود کنید. اینم گیت هاب گراف فریم.فقط یادتون نره قبل شروع اینو لود کنید و حتما باید اسپارک ترجیحا نسخه های جدیدتر روی سیستم تون نصب باشه البته فعلا Preview نصب نکنین$SPARK_HOME/bin/spark-shell --packages graphframes:graphframes:0.8.0-spark3.0-s_2.12&lt;br/&gt; </description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Tue, 07 Apr 2020 12:12:18 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی با مفهوم Data Lake یا دریاچه داده به همراه معرفی Delta Lake</title>
                <link>https://virgool.io/@HeydariToday/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%85%D9%81%D9%87%D9%88%D9%85-data-lake-%DB%8C%D8%A7-%D8%AF%D8%B1%DB%8C%D8%A7%DA%86%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-delta-lake-sdmz7ylvhhvw</link>
                <description>سلام دوستان عزیزم. قبل از هر چیزی بگم من این مطلب رو در وب سایت دنیای بیگ دیتا نشر دادم که اونجا هم می تونین این نوشته رو با تصاویر بیشتر به همراه مباحث پیرامون فیلد بیگ دیتا مطالعه کنید.معماری دریاچه داده Delta Lakeآشنایی قبل از هر چیزی باید بگم برای خیلی ها این سوال مطرح هست که فرق بین دریاچه داده با انبار داده چی هست؟ استاد ارجمند مارتین فاولر که ملت تو مهندسی نرم افزار و معماری نرم افزار خوب می شناسنش تو وب سایت خودش که من واسه مقاله معماری میکروسرویس ازش کمک گرفتم یه پستی در این باره داره که اومده فرق این دو تا رو تشریح کرده. مخلص کلام اینکه تو دریاچه، داده ها به همون فرمتی که Ingest میشن ذخیره میشن یعنی بصورت خام و Raw Format، اما تو انباره داده چون دیتا آنالیست ها میخوان از دیتاهاش واسه تحلیل و گزارش گیری و داشبورد ساختن واسه کارفرما! استفاده کنن مجبورن دیتاهاشون قبلا از ورود به انباره داده تمیز باشه و بقول معروف Clean و یه اسکیمای سازگار داشته باشه.یه شکل خوبی دیگه هم گذاشته و مفهوم دریاچه داده رو باز کرده و گفته سیستم های عملیاتی از طریق Service Connection هایی که دارن فارغ از دریاچه به هم وصل میشن و با هم ارتباط دارن و در ادامه گفته سیستم های عملیاتی چطور به دریاچه از طریق یه سری سرویس های دیتامحور وصل میشن. تو یه بخشی هم گفته کیا میان ازش استفاده میکنن مثل دانشمندان داده و دیتا آنالیست ها.تفاوت های دریاچه داده و انباره دادهتو این بخش تفاوت های دریاچه داده و انباره داده رو با هم بررسی می کنیم.دریاچه داده: ساختار منعطف‌تر، هزینه کمتر در ساخت، ذخیره سازی داده های ساختاریافته و غیرساختار یافته، هدف استفاده از دیتا هنوز مشخص نیست، کاربران اصلی: دانشمندان داده، قابلیت دسترسی بسیار بالا و آماده تغییرات بروزرسانیانباره داده: ساختار مبتنی بر اسکیمای واحد و مشخص، هزینه به مراتب بیشتر در ساخت، ذخیره سازی داده ها بصورت پاکسازی شده، دیتا در حال پردازش و استفاده بصورت عملیاتی است، کاربران اصلی: متخصصان کسب و کار، پیچیدگی نسبی به همراه هزینه مندی در ایجاد تغییراتآشنایی با Delta Lakeپلتفرم Delta Lake یک لایه Storage هستش که اصول تراکنشی ACID رو برای موتور پردازشی آپاچی اسپارک و Workflow در بیگ دیتا به ارمغان میاره و باهاش یکپارچه میشه. ورودی Delta Lake می تونه هم دیتای Batch باشه هم از نوع Stream و می تونه با HDFS, Azure Data Storage و Amazon S3 کار کنه. ما حصل کار روی این نوع دریاچه داده می تونه تحویل مهندسان یادگیری ماشین و دانشمندان داده بشه تا بتونن تحلیل های مدنظرشون رو به منظور استخراج الگو و کشف ارزش از داده برای سازمان ها انجام بدن.</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Sat, 04 Apr 2020 18:03:03 +0430</pubDate>
            </item>
                    <item>
                <title>اسپارک چطور از هدوپ استفاده می کند؟</title>
                <link>https://virgool.io/WordofData/%D8%A7%D8%B3%D9%BE%D8%A7%D8%B1%DA%A9-%DA%86%D8%B7%D9%88%D8%B1-%D8%A7%D8%B2-%D9%87%D8%AF%D9%88%D9%BE-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D9%85%DB%8C-%DA%A9%D9%86%D8%AF-dj9ttjzjree0</link>
                <description>سلام دوستان عزیزم. قبل از هر چیزی بگم من این مطلب رو در وب سایت دنیای بیگ دیتا نشر دادم که اونجا هم می تونین راجع به مباحث بیگ دیتا بیشتر مطالعه کنیدمقدمهنکته مهمی که می بایست مورد توجه قرار گیرد اینست که هدوپ یک اکوسیستم پردازش کلان داده است که ابزارهای متنوعی می توانند در این اکوسیستم حضور داشته باشند و با هدوپ کار کنند. یکی از این ابزارها موتور پردازشی یکپارچه اسپارک است که به منظور دسترسی به لایه ذخیره سازی داده در فایل سیستم HDFS می تواند با هدوپ یکپارچه شود.لایه ذخیره سازی دادهاسپارک به تنهایی دارای لایه ذخیره‌سازی و ماندگاری داده نیست و می‌بایست داده‌ها یا به صورت محلی وارد این ابزار شوند و یا اینکه از فایل سیستم توزیع‌شده هدوپ و یا Amazon S3 استفاده کنند.زمان بندی وظایف پردازشیاسپارک وظایف پردازشی خودش را به صورت تک ‌سیستمی زمانبندی می‌کند و از روش‌های دیگر زمانبندی وظایف پشتیبانی نمی‌کند.Yarn وارد می شود و به کمک این موتور پردازشی در جهت زمانبندی توزیع‌شده وظایف آن می‌شتابد.یک دیتابیس؟!هدوپ نه به تنهایی و با کمک Hive یا Hbase می تواند نقش یک دیتابیس را ایفا کند.اما اسپارک به دلیل نداشتن لایه ذخیره‌سازی به خودی خود نمی‌تواند نقش یک دیتابیس را بازی کند.پردازش استریم دادهدر مقابل اگر اسپارک را به هدوپ متصل کنید می‌توانید داده‌ها را به صورت درون‌حافظه‌ای و استریم پردازش کنید.</description>
                <category>محمد حیدری</category>
                <author>محمد حیدری</author>
                <pubDate>Sat, 04 Apr 2020 00:05:49 +0430</pubDate>
            </item>
            </channel>
</rss>