[{"data":1,"prerenderedAt":616},["ShallowReactive",2],{"navigation":3,"/intro/architecture":161},[4,22,39,52,89,98,115,128,141],{"title":5,"path":6,"stem":7,"children":8,"page":21},"آشنایی و مبانی","/intro","1.intro",[9,13,17],{"title":10,"path":11,"stem":12},"معماری داده‌ها","/intro/architecture","1.intro/1.architecture",{"title":14,"path":15,"stem":16},"الگوهای پیشنهادی","/intro/best-practices","1.intro/2.best-practices",{"title":18,"path":19,"stem":20},"مقایسه ETL و ELT","/intro/etl-vs-elt","1.intro/3.etl-vs-elt",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"ساخت و مدیریت فضا","/space","2.space",[27,31,35],{"title":28,"path":29,"stem":30},"ساختار فضا و پروژه","/space/structure","2.space/1.structure",{"title":32,"path":33,"stem":34},"آموزش ساخت فضا","/space/create-space","2.space/2.create-space",{"title":36,"path":37,"stem":38},"طرح فضا","/space/plan","2.space/3.plan",{"title":40,"path":41,"stem":42,"children":43,"page":21},"مدیریت کاربران","/user-management","3.user-management",[44,48],{"title":45,"path":46,"stem":47},"آشنایی با نقش‌ها","/user-management/roles","3.user-management/1.roles",{"title":49,"path":50,"stem":51},"اعطای دسترسی","/user-management/access","3.user-management/2.access",{"title":53,"path":54,"stem":55,"children":56,"page":21},"ایجاد و مدیریت دیتاست","/dataset","4.dataset",[57,61,65,69,73,77,81,85],{"title":58,"path":59,"stem":60},"جدول سفارشی و ماژول","/dataset/custom-table-vs-module","4.dataset/1.custom-table-vs-module",{"title":62,"path":63,"stem":64},"الگوی نام‌گذاری جداول","/dataset/table-naming-conventions","4.dataset/2.table-naming-conventions",{"title":66,"path":67,"stem":68},"تفاوت درج با ورژن و آپدیت","/dataset/write-modes","4.dataset/3.write-modes",{"title":70,"path":71,"stem":72},"انواع ستون و نوع مقدار","/dataset/column-types","4.dataset/4.column-types",{"title":74,"path":75,"stem":76},"متادیتا و ویژگی‌های ستون","/dataset/column-settings","4.dataset/5.column-settings",{"title":78,"path":79,"stem":80},"قوانین امنیتی جدول","/dataset/table-settings","4.dataset/6.table-settings",{"title":82,"path":83,"stem":84},"ویرایش اسکیما","/dataset/schema-evolution","4.dataset/7.schema-evolution",{"title":86,"path":87,"stem":88},"آموزش ایجاد جدول سفارشی","/dataset/create-custom-table","4.dataset/8.create-custom-table",{"title":90,"path":91,"stem":92,"children":93,"page":21},"لود داده","/data-load","5.data-load",[94],{"title":95,"path":96,"stem":97},"روش‌های لود مستقیم","/data-load/methods","5.data-load/1.methods",{"title":99,"path":100,"stem":101,"children":102,"page":21},"داشبورد","/dashboard","6.dashboard",[103,107,111],{"title":104,"path":105,"stem":106},"ساختار و دسترسی","/dashboard/structure","6.dashboard/1.structure",{"title":108,"path":109,"stem":110},"فیلترهای استوری","/dashboard/story-filters","6.dashboard/2.story-filters",{"title":112,"path":113,"stem":114},"آموزش ساخت استوری","/dashboard/create-story","6.dashboard/3.create-story",{"title":116,"path":117,"stem":118,"children":119,"page":21},"کوئری","/query","7.query",[120,124],{"title":121,"path":122,"stem":123},"نکات نوشتن کوئری","/query/query-notes","7.query/1.query-notes",{"title":125,"path":126,"stem":127},"توابع اختصاصی داده‌لند","/query/dadeland-sql","7.query/dadeland-sql",{"title":129,"path":130,"stem":131,"children":132,"page":21},"فانل","/funnel","8.funnel",[133,137],{"title":134,"path":135,"stem":136},"آموزش ایجاد فانل","/funnel/create-funnel","8.funnel/1.create-funnel",{"title":138,"path":139,"stem":140},"شیوه کار فانل","/funnel/how-funnel-works","8.funnel/2.how-funnel-works",{"title":142,"path":143,"stem":144,"children":145,"page":21},"ماژول کلاینت","/client-module","9.client-module",[146,150,153,157],{"title":147,"path":148,"stem":149},"آموزش راه‌اندازی","/client-module/up-and-running","9.client-module/1.up-and-running",{"title":14,"path":151,"stem":152},"/client-module/best-practices","9.client-module/2.best-practices",{"title":154,"path":155,"stem":156},"جمع‌آوری داده (لندر وب)","/client-module/lander-web","9.client-module/3.lander-web",{"title":158,"path":159,"stem":160},"رویدادهای پیش‌فرض","/client-module/default-events","9.client-module/4.default-events",{"id":162,"title":10,"body":163,"description":609,"extension":610,"links":611,"meta":612,"navigation":613,"path":11,"seo":614,"stem":12,"__hash__":615},"docs/1.intro/1.architecture.md",{"type":164,"value":165,"toc":600},"minimark",[166,171,179,182,185,188,191,253,259,261,264,267,323,325,328,331,380,382,385,392,394,397,403,406,410,413,415,418,420,423,425,428,554,557,559,563,566],[167,168,170],"h3",{"id":169},"مدل-کیمبال-kimball","مدل کیمبال (Kimball)",[172,173,174,175],"p",{},"↙️ ",[176,177,178],"strong",{},"داده‌لند به‌طور رسمی از مدل معماری کیمبال برای طراحی داده‌ها استفاده می‌کند.",[172,180,181],{},"این رویکرد که توسط Ralph Kimball معرفی شده است، مبتنی بر مدل Dimensional است و داده‌ها در قالب جداول وقایع (Fact) و وصف‌ها (Dimension) سازماندهی می‌شوند. تفاوت این دو جدول در نوع اطلاعات و داده‌هایی است که میزبانی می‌کنند.",[183,184],"br",{},[172,186,187],{},"جدول وقایع (Fact) به مجموعه داده‌هایی گفته می‌شود که نشانگر وقوع یک رخداد در فرآیندهای سازمانی است که معمولا شامل مقادیر عددی و قابل اندازه‌گیری می‌شود. برای مثال، یک سفارش فروش یک واقعه محسوب می‌شود و مقادیر عددی مثل مقدار فروش، تعداد آیتم و قیمت کل در این واقعه ثبت می‌شوند.",[172,189,190],{},"نمونه‌ای ساده از یک جدول وقایع به این شکل است:",[192,193,194,216],"table",{},[195,196,197],"thead",{},[198,199,200,204,207,210,213],"tr",{},[201,202,203],"th",{},"order_date",[201,205,206],{},"order_id",[201,208,209],{},"item_count",[201,211,212],{},"discount_amount",[201,214,215],{},"sales_amount",[217,218,219,237],"tbody",{},[198,220,221,225,228,231,234],{},[222,223,224],"td",{},"2023-01-06",[222,226,227],{},"1003",[222,229,230],{},"1",[222,232,233],{},"500",[222,235,236],{},"7520",[198,238,239,241,244,247,250],{},[222,240,224],{},[222,242,243],{},"1004",[222,245,246],{},"5",[222,248,249],{},"2000",[222,251,252],{},"30000",[254,255,256],"note",{},[172,257,258],{},"جدول وقایع تنها به داده‌های عددی محدود نیست و انواع گوناگونی دارد. برای مثال، جدول وقایع بدون مقدار (Factless) رخدادهایی مانند حضور و غیاب را ثبت می‌کند و جدول اسنپ‌شات وضعیت را در یک بازه زمانی مشخص (مانند موجودی پایان روز) ذخیره می‌کند. تمامی این مدل‌ها زیرمجموعه جدول وقایع محسوب می‌شوند.",[183,260],{},[172,262,263],{},"در مقابل، وصف (Dimension) به مجموعه داده‌هایی گفته می‌شود که اطلاعات توصیفی درباره یک ماهیت ثابت ارائه می‌کنند؛ برای مثال جدول اطلاعات مشتری (مانند نام، سن و...) که حاوی اطلاعات توصیفی درباره مشتریان است یک جدول وصف محسوب می‌شود.",[172,265,266],{},"برای مثال یک جدول وصف می‌تواند چنین باشد:",[192,268,269,288],{},[195,270,271],{},[198,272,273,276,279,282,285],{},[201,274,275],{},"join_date",[201,277,278],{},"id",[201,280,281],{},"name",[201,283,284],{},"age",[201,286,287],{},"city",[217,289,290,306],{},[198,291,292,295,297,300,303],{},[222,293,294],{},"2022-03-15",[222,296,230],{},[222,298,299],{},"Ali",[222,301,302],{},"30",[222,304,305],{},"Tehran",[198,307,308,311,314,317,320],{},[222,309,310],{},"2021-07-20",[222,312,313],{},"2",[222,315,316],{},"Sara",[222,318,319],{},"25",[222,321,322],{},"Isfahan",[183,324],{},[172,326,327],{},"در این معماری، یک جدول وقایع می‌تواند ستون‌هایی برای ارجاع به جدول‌های وصف (Dimension) داشته باشد. این ستون‌ها معمولاً به شکل شناسه (ID) هستند تا هر واقعه به داده‌های توصیفی مرتبط در جدول وصف متصل شود. این رویکرد به جداسازی داده وقایع از داده وصف کمک می‌کند و اصول داده‌ای توصیه می‌کنند که یک جدول وقایع جدا و چندین جدول وصف در نظر گرفته و ارتباط‌ها از طریق شناسه‌ها برقرار شود.",[172,329,330],{},"برای مثال، جدول وقایع فروش با ارجاع به جدول مشتری (ستون user_id) می‌تواند به شکل زیر باشد:",[192,332,333,350],{},[195,334,335],{},[198,336,337,339,341,344,346,348],{},[201,338,203],{},[201,340,206],{},[201,342,343],{},"user_id",[201,345,209],{},[201,347,212],{},[201,349,215],{},[217,351,352,366],{},[198,353,354,356,358,360,362,364],{},[222,355,224],{},[222,357,227],{},[222,359,230],{},[222,361,230],{},[222,363,233],{},[222,365,236],{},[198,367,368,370,372,374,376,378],{},[222,369,224],{},[222,371,243],{},[222,373,313],{},[222,375,246],{},[222,377,249],{},[222,379,252],{},[183,381],{},[172,383,384],{},"با این ساختار، هر واقعه می‌تواند اطلاعات توصیفی مرتبط با مشتری خود را از جدول وصف با استفاده از یک JOIN بازیابی کند. این الگو که مبتنی بر نرمال‌سازی است، از تکرار داده‌های توصیفی در جدول وقایع جلوگیری می‌کند و باعث می‌شود داده‌ها در جداول تخصصی و مجزا سازمان‌دهی شوند.",[172,386,387],{},[388,389],"img",{"alt":390,"src":391},"Kimball Model","/images/kimball-model.webp",[183,393],{},[172,395,396],{},"در داده‌لند جداول ماژول‌ها مبتنی بر مدل کیمبال هستند. همچنین در هنگام ساخت جدول سفارشی، گزینه‌ای برای انتخاب از بین نوع جدول وقایع و وصف در اختیار گذاشته می‌شود.",[172,398,399],{},[388,400],{"alt":401,"src":402},"Table Types","/images/table-types.webp",[404,405],"hr",{},[167,407,409],{"id":408},"مقایسه-با-سایر-مدلها","مقایسه با سایر مدل‌ها",[172,411,412],{},"در کنار مدل کیمبال، رویکردهای معماری دیگری مانند Inmon و Data Vault نیز مطرح هستند.",[183,414],{},[172,416,417],{},"رویکرد Inmon یکی از معروف‌ترین روش‌ها برای طراحی و پیاده‌سازی انبار داده سازمانی (Enterprise Data Warehouse) است و به آن روش Top-Down گفته می‌شود. در این رویکرد، ابتدا تمرکز روی ایجاد یک انبار داده مرکزی و یکپارچه است که شامل تمام داده‌های مهم سازمان می‌شود. این داده‌ها از منابع مختلف جمع‌آوری، پاک‌سازی و استانداردسازی می‌شوند تا کیفیت و سازگاری آن‌ها تضمین شود. پس از ایجاد این انبار داده جامع، می‌توان Data Mart‌های تخصصی را برای تحلیل‌های موردی و گزارش‌گیری ایجاد کرد. به عبارت دیگر، Data Martها از دل انبار داده استخراج می‌شوند و داده‌ها به صورت هدفمند برای تیم‌های تحلیلی ارائه می‌شوند.",[183,419],{},[172,421,422],{},"مدل Data Vault داده‌ها را در سه نوع جدول اصلی نگه می‌دارد: Hub که کلیدهای اصلی هر ماهیت مثل مشتری یا محصول را ذخیره می‌کند، Link که روابط بین این ماهیت‌ها را ثبت می‌کند، و Satellite که جزئیات و تغییرات تاریخی داده‌ها را نگه می‌دارد. وقتی داده‌ها تغییر می‌کنند، به جای اینکه رکورد قدیمی را بازنویسی کنیم، تغییرات در Satellite اضافه می‌شوند تا تاریخچه کامل داده‌ها حفظ شود. به این ترتیب، ساختار اصلی داده‌ها و روابط بین آن‌ها همیشه ثابت می‌ماند و می‌توان همزمان جزئیات و تاریخچه را بررسی کرد.",[183,424],{},[172,426,427],{},"در جدول زیر مقایسه بین مدل کیمبال، Inmon و Data Vault ارائه شده است:",[192,429,430,446],{},[195,431,432],{},[198,433,434,437,440,443],{},[201,435,436],{},"ویژگی",[201,438,439],{},"Kimball",[201,441,442],{},"Inmon",[201,444,445],{},"Data Vault",[217,447,448,462,476,490,503,517,529,542],{},[198,449,450,453,456,459],{},[222,451,452],{},"رویکرد طراحی",[222,454,455],{},"Bottom-Up",[222,457,458],{},"Top-Down",[222,460,461],{},"Flexible/Historized",[198,463,464,467,470,473],{},[222,465,466],{},"ساختار داده",[222,468,469],{},"Fact & Dimension",[222,471,472],{},"Enterprise Data Warehouse and Data Marts",[222,474,475],{},"Hub, Link, Satellite",[198,477,478,481,484,487],{},[222,479,480],{},"مدل‌سازی داده",[222,482,483],{},"*Normalized Facts",[222,485,486],{},"Normalized",[222,488,489],{},"Hybrid / Historized",[198,491,492,495,498,501],{},[222,493,494],{},"پیچیدگی طراحی",[222,496,497],{},"متوسط",[222,499,500],{},"زیاد",[222,502,500],{},[198,504,505,508,511,514],{},[222,506,507],{},"کاربران نهایی",[222,509,510],{},"تحلیل‌گران و کاربران هوش تجاری",[222,512,513],{},"تیم‌های IT و ETL",[222,515,516],{},"تیم‌های داده",[198,518,519,522,525,527],{},[222,520,521],{},"عملکرد کوئری",[222,523,524],{},"بالا",[222,526,497],{},[222,528,497],{},[198,530,531,534,537,540],{},[222,532,533],{},"زمان پیاده‌سازی",[222,535,536],{},"کوتاه",[222,538,539],{},"طولانی",[222,541,539],{},[198,543,544,547,549,552],{},[222,545,546],{},"کاربرپسندی",[222,548,500],{},[222,550,551],{},"کم",[222,553,497],{},[172,555,556],{},"* هرچند استاندارد مدل کیمبال معمولاً با Star Schema شناخته می‌شود، اما در داده‌لند از نظر فنی محدودیتی برای استفاده از دیمنشن‌های تودرتو (Snowflake Schema) وجود ندارد و دیمنشن‌ها می‌توانند به صورت نرمال‌سازی شده (Normalized) طراحی شوند.",[404,558],{},[167,560,562],{"id":561},"مزیت-مدل-کیمبال","مزیت مدل کیمبال",[172,564,565],{},"با توجه به همراستایی بیشتر مدل کیمبال با ماموریت بهره‌برداری از داده، این مدل در محصول داده‌لند یکپارچه شده است. در ادامه مزیت‌هایی که این معماری را نسبت به سایر گزینه‌ها برتری می‌دهد ارائه شده است:",[567,568,569,576,582,588,594],"ul",{},[570,571,572,575],"li",{},[176,573,574],{},"بهره‌برداری سریع‌تر از داده‌ها",": در صورت پیروی از فرآیند‌های ETL، داده‌ها از ابتدا با اهداف مشخص و از پیش تعیین‌شده در جداول نهایی ذخیره می‌شوند، که این امر به سازمان‌ها امکان می‌دهد سریع‌تر از سایر مدل‌ها به تحلیل‌ها و بینش‌های ارزشمند کسب‌وکار دسترسی پیدا کنند و Time to Value سریع‌تری را تجربه کنند.",[570,577,578,581],{},[176,579,580],{},"سادگی و کاربرپسندی",": طراحی فکت‌ها و دیمنشن‌ها به کاربران اجازه می‌دهد بدون دانش فنی عمیق، با سهولت بیشتری با داده‌ها کار کنند و نیاز به آموزش و آنبوردینگ طولانی کاهش یابد. این ویژگی باعث می‌شود مدل کیمبال حتی در سازمان‌هایی با بلوغ داده‌ای پایین نیز به‌راحتی قابل استفاده باشد.",[570,583,584,587],{},[176,585,586],{},"پیاده‌سازی کم‌هزینه‌تر",": به دلیل نزدیکی بیشتر به دیتابیس‌های اپلیکیشن و ساختار ساده‌تر، مدل کیمبال امکان پیاده‌سازی سریع‌تر با فرآیندهای ETL محور را فراهم می‌کند.",[570,589,590,593],{},[176,591,592],{},"پشتیبانی از توسعه تدریجی",": سازمان‌ها می‌توانند ابتدا مهم‌ترین داده‌ها و تحلیل‌ها را پیاده کنند و سپس به تدریج انبار داده بزرگ‌تر و جامع‌تری ایجاد کنند.",[570,595,596,599],{},[176,597,598],{},"انعطاف‌پذیری در طراحی",": امکان افزودن ساختارها و تحلیل‌های جدید به‌تدریج وجود دارد و بدون نیاز به بازسازی کل انبار داده، می‌توان به نیازهای تحلیلی تازه پاسخ داد.",{"title":601,"searchDepth":602,"depth":603,"links":604},"",1,2,[605,607,608],{"id":169,"depth":606,"text":170},3,{"id":408,"depth":606,"text":409},{"id":561,"depth":606,"text":562},"این صفحه مروری کوتاه بر معماری کیمبال و تفاوت‌های اصلی آن با سایر رویکردهای معماری داده ارائه می‌کند.","md",null,{},true,{"title":10,"description":609},"JXC26ckMSGFLvbtxf8lm5GvNXTxmsxfjiW8DPMIwjSY",1784541758370]