درود. همه ی دیتابیس ها از اینULID پشتیبانی می کنند؟ دیتابیس چطوری تصمیم میگیره که چون uuid وارد کردیم باید ی page جدید باز کنه واسه insert و این که ulid بدیم تووووی ی Page عمل insert رو انجام میده؟ چطوری تضمین میدن دیتابیس ها؟ مکانیزم ش چیه؟ مرسییی
درود علی جان ۱- ببین ulid و uuid هر کدوم یه string چیزی نیست که دیتابیس پشتیبانی بخواد بکنه یا نکنه. صرفا باید مثل بقیه تایپ ها و دیتا هایی که ما بهش می دیم استورش کنه ۲- دیتابیس اون فیلدی رو که ما براش به عنوان کلید اصلی انتخاب کردیم رو استفاده می کنه برای اینکه بفهمه باید تو کدوم page دیتا بریزه حالا اگه اون کلید اصلی ما قابل سورت کردن باشه اون میاد یک page رو بر میداره و هر دیتایی بیاد رو به ترتیب داخلی اون میریزه تا وقتی که اون page پر بشه و وقتی پر شد میره سراغ page بعدی و وقتی این کار رو می کنه همون جور که توضیحش رو تو ویدیو دادم فایدش اینکه اگه دیتای اون کاربر پشت سر و توی یک ریکوست (توی یک بچ) هم وارد شده باشه پس توی یک page هم ذخیره شده و همه دیتارو می تونیم از همون یدون page برداریم حالا اگه اون کلید اصلی ما قابل سورت کردن نباشه هر دفعه که یه ریکوستی میاد با توجه به اون id میاد دیتاش رو تو پیج های متفاوت میریزه و حالا ممکنه که دو تا ریکوست رندم تو یه page هم بیفتن
@@kiarash-amiri مرسی از توضیحاتت همین پاراگراف آخری که فرمودی، منظورم از ساپورت کردن همین تشخیص sortable بودن یا نبودن بود. اینکه دیتابیس رفتار متفاوتی در برابر تایپ id ای که بش میدیم خواهد داشت یا ن. لاجیک insert دیتا تووو page ها رو تغییر میده بر اساس تایپ آنچه به عنوان id انتخاب کردیم یا ن.
یک مثال عملی بزنید ..اینکه تئوری بگید که فایده نداره! ضمنا ورژن ۷ مشکلات اینجوری رو رفع کرده... یکم کاربردیتر توصیح بدی بهتره واقعا اینجوری ادم چیزی نمیفهمه همش در سطح مفاهیم ساختمان داده صحبت میکنی واین خوب نیس
درود رضا جان دمت گرم از فیدبکی که بهم میدی! ببین من باز سعی می کنم بیشتر مثال بزنم یا اسلاید بیشتر درست کنم ولی تئوریه دیگه کاریش نمیشه کرد مثلا تهش بتونم ۲ میلیون دیتا اد کنم با uuid یه ۲ میلیون هم با uuid بعد مثلا range بگیرم که ببینین سرعتش بیشتر شده یه رم مثل چقدر سریع پر میشه و ... زیاد نمیشه با این مثال ها چیز انقدر تئوریو نشون داد درمورد uuid ورژن ۷ دقیقا درست می گی! میشه تو توضیحاتی که تو ویدیو دادم به جای ulid در نظر گرفت
سوال مهم اینه که اکثرا نمیان از uuid بعنوان کلید اصلی استفاده کنن 😁 چون طولانیه. راه ساخت یه کلید اصلی کوتاه ده کرکتری یونیورسال و یونیک و غیر متوالی چیه؟ مثل یوتیوب! ایا یوتیوب اکزیست بودن ای دی رو میاد قبلش چکمیکنه؟ اگه چکمیکنه که کاست داره؟ اگه چک نمیکنه چطور در کلاستراش مطمینه که ای دی تولید شده یونیکه؟ شرمنده کیارش یخورده بخام نقد ت کنم توضیحاتت عالیه ولی همش تئوریه دانشگاهیه و در عمل خیلی سخته درک توضیحاتت. سوال دیگه اینکه یک وبسایت کوتاه کننده لینک، به شما یه لینک کوتاه میده. درسته؟ و اون آی دی کوتاه کلید اصلی جدوله سایته دیگه. نقش uuid این وسط چیه؟
درود بر تو فرزاد جان ۱- ببین اتفاقا چیز معمولیه که بیاد uuid رو به عنوان کلید اصلی استفاده کنن! و برای ساخت یه id ده کاراکتری من مثلا nanoid میشناسم می تونی استفاده کنی و یه نکته ای که هست اینکه وقتی ما می گیم که یونیک یونیورسالی یعنی اینکه احتمالش خیلیی خیلی کمه دو تا id شبیه هم باشن و هر چقدر که تعداد کاراکتر های اون id کم تر باشه و تعداد کاراکتر هایی که میشه توش استفاده کرد کم تر باشه، تعداد کم تری id یونیک میشه ساخت و در نتیجه احتمال اینکه دوتا id مثل هم ساخته بشه بالا تر میره مثلا با 10 رقم + 26 حرف کوچک + 26 حرف بزرگ میشه برای یه id که ۱۰ کاراکتر داشته باشه ۶۲ به توان ۱۰ (ترکیب یا combinations) ساخت که uuid خیلی combinations بزرگ تر میشه
۲- من نمی دونم یوتوب داره از uuid استفاده می کنه یا نه. ولی کلا یکی از دلایلی که از uuid استفاده می کنن همینه اصلا که لازم نباشه هر دفعه چک کنن که یونیک هست یا نیست! احتمال اینکه دو تا uuid یکسان ساخته بشه خیلییییی کمه! و طبیعتا چک کردنش هر دفعه کلی کاست داره! یعنی می تونی بیای تعداد کاراکتر های id رو کم کنی ولی از اون طرف کاستش اینکه احتمال دوپلیکیت رو بالا می بری و شاید لازم باشه هر دفعه قبل insert بیای چک کنی که یونیک باشه
و در مورد نقدرت هم بگم که خیلی خوبه که نقد میکنی! بازم سعی می کنم حالا با مثال یا ساختن اسلاید های بیشتر ویدیو هارو قابل فهم تر کنم ولی با توجه به اینکه ویدیو ها تئوریه بعضی موقع ها طبیعیه چند بار ببیینی ویدیو هارو و با سوالتتم خیلی حال می کنم که مطرحشون می کنی !
یه مورد دیگم که فراموش کردم اینکه برای اینکه لازم نباشه id هارو قبل از اضافه کردن به دیتابیس برای یونیک بودن چکشون کنی احتمال داره به توجه به سیستمت مجبور باشی حتما سمت خودت جنریت کنی نه این که کاربر بتونه اون رو بفرسته!
منظورت اینکه گرفتن دیتا از دیتابیس با لینک کوتاهش انجام میشه نه Id؟ ببین نکتش اینجاست که وقتی کلید اصلیت uuid باشه اون داستانی که برای page گفتم پیش میاد یعنی میای ۱۰ لینک رو دیتاشون رو داخلی یک page میریزی و موقع گرفتن اون page رو باز می کنی و کل دیتای یک نفر روشه ...(توضیحش رو تو ویدیو دادم) میشه index روی اون short link هم گذاشته باشی ولی در نهایت وقتی می خواد رو page ذخیره بشه از همون uuid استفاده می کنه دیگه
مثالتون از سیستم شورت لینک اونجایی که یو ال آیدی داریم و پنالتی میخوریم سوال ایجاد میکنه. آیدی سطر های شورت لیست مرتب در یک پیج در رم هست شما از کجا مطمئنی که همش مال یه کاربره؟ اصلا آیدی کاربر تو این جدول مگر موثر هست؟ خولندن دینا مگر یک به یک نیست؟خب چند کاربر به صورت همزمان اینسرت کنن تو یک پیج پشت سر هم دیتای دو کاربر هم مگر پشت سر هم در یک پیج با لاک های متوالی نوشته نمیشه؟ با فرض تعداد بچ رکورد ورودی کمتر از پیچ سایز
درود برشما سوالات خیلی به جاست! ۱- در صورتی که مثلا سیستم به این شکل طراحی شده باشه که مثلا ۱۰ تا لینک بگیره و ۱۰ شورت لینک تحویل بده این امکان وجود داره که همه یک page مال یک نفر بشه! ۲- من منظورم id کاربر نبود منظورم id هر کدوم از اون short like هاست! یعنی یه جدول داریم که توش هر سطر یه uuid داره یه short link یه link اصلی کاربر و مثلا یه created و deleted at و ... ۳- منظور از خوندن دیتا مگه یک به یک نیست رو نفهمیدم! ۴-ببین من فرضم بر این بود که کاربر ۱۰ تا لینک همزمان می فرسته! و با فرض اینکه پیج سایز از این ۱۰ تا بزرگ تر باشه، اره امکانش هستش که یه کاربر دیگه کوری بزنه و باز دیتا به ادامه اون page اضافه کنه
عالیه لطفا بیشتر درباره دیتابیس مطب بزار خیلی دوست دارم چهار تا سطح های ازوله تراکنش دیتابیس ها مثل پسترگس یا مای اسکیوال یه ویدیو راجبش بدین
این نکته های که در مورد page file ها گفتی مربوط به همه ای دیتابیس ها می شه؟
thanks ❤
Your welcome😎❤🔥
damet garm
Fadat refigh😎❤
درود. همه ی دیتابیس ها از اینULID پشتیبانی می کنند؟
دیتابیس چطوری تصمیم میگیره که چون uuid وارد کردیم باید ی page جدید باز کنه واسه insert و این که ulid بدیم تووووی ی Page عمل insert رو انجام میده؟
چطوری تضمین میدن دیتابیس ها؟ مکانیزم ش چیه؟
مرسییی
درود علی جان
۱- ببین ulid و uuid هر کدوم یه string چیزی نیست که دیتابیس پشتیبانی بخواد بکنه یا نکنه. صرفا باید مثل بقیه تایپ ها و دیتا هایی که ما بهش می دیم استورش کنه
۲- دیتابیس اون فیلدی رو که ما براش به عنوان کلید اصلی انتخاب کردیم رو استفاده می کنه برای اینکه بفهمه باید تو کدوم page دیتا بریزه
حالا اگه اون کلید اصلی ما قابل سورت کردن باشه اون میاد یک page رو بر میداره و هر دیتایی بیاد رو به ترتیب داخلی اون میریزه تا وقتی که اون page پر بشه و وقتی پر شد میره سراغ page بعدی و وقتی این کار رو می کنه همون جور که توضیحش رو تو ویدیو دادم فایدش اینکه اگه دیتای اون کاربر پشت سر و توی یک ریکوست (توی یک بچ) هم وارد شده باشه پس توی یک page هم ذخیره شده و همه دیتارو می تونیم از همون یدون page برداریم
حالا اگه اون کلید اصلی ما قابل سورت کردن نباشه هر دفعه که یه ریکوستی میاد با توجه به اون id میاد دیتاش رو تو پیج های متفاوت میریزه
و حالا ممکنه که دو تا ریکوست رندم تو یه page هم بیفتن
@@kiarash-amiri مرسی از توضیحاتت
همین پاراگراف آخری که فرمودی، منظورم از ساپورت کردن همین تشخیص sortable بودن یا نبودن بود. اینکه دیتابیس رفتار متفاوتی در برابر تایپ id ای که بش میدیم خواهد داشت یا ن. لاجیک insert دیتا تووو page ها رو تغییر میده بر اساس تایپ آنچه به عنوان id انتخاب کردیم یا ن.
یک مثال عملی بزنید ..اینکه تئوری بگید که فایده نداره! ضمنا ورژن ۷ مشکلات اینجوری رو رفع کرده...
یکم کاربردیتر توصیح بدی بهتره واقعا اینجوری ادم چیزی نمیفهمه همش در سطح مفاهیم ساختمان داده صحبت میکنی واین خوب نیس
درود رضا جان
دمت گرم از فیدبکی که بهم میدی! ببین من باز سعی می کنم بیشتر مثال بزنم یا اسلاید بیشتر درست کنم ولی تئوریه دیگه کاریش نمیشه کرد
مثلا تهش بتونم ۲ میلیون دیتا اد کنم با uuid یه ۲ میلیون هم با uuid بعد مثلا range بگیرم که ببینین سرعتش بیشتر شده یه رم مثل چقدر سریع پر میشه و ... زیاد نمیشه با این مثال ها چیز انقدر تئوریو نشون داد
درمورد uuid ورژن ۷ دقیقا درست می گی! میشه تو توضیحاتی که تو ویدیو دادم به جای ulid در نظر گرفت
سوال مهم اینه که اکثرا نمیان از uuid بعنوان کلید اصلی استفاده کنن 😁 چون طولانیه. راه ساخت یه کلید اصلی کوتاه ده کرکتری یونیورسال و یونیک و غیر متوالی چیه؟ مثل یوتیوب! ایا یوتیوب اکزیست بودن ای دی رو میاد قبلش چکمیکنه؟ اگه چکمیکنه که کاست داره؟ اگه چک نمیکنه چطور در کلاستراش مطمینه که ای دی تولید شده یونیکه؟ شرمنده کیارش یخورده بخام نقد ت کنم توضیحاتت عالیه ولی همش تئوریه دانشگاهیه و در عمل خیلی سخته درک توضیحاتت. سوال دیگه اینکه یک وبسایت کوتاه کننده لینک، به شما یه لینک کوتاه میده. درسته؟ و اون آی دی کوتاه کلید اصلی جدوله سایته دیگه. نقش uuid این وسط چیه؟
درود بر تو فرزاد جان
۱- ببین اتفاقا چیز معمولیه که بیاد uuid رو به عنوان کلید اصلی استفاده کنن! و برای ساخت یه id ده کاراکتری من مثلا nanoid میشناسم می تونی استفاده کنی و یه نکته ای که هست اینکه وقتی ما می گیم که یونیک یونیورسالی یعنی اینکه احتمالش خیلیی خیلی کمه دو تا id شبیه هم باشن و هر چقدر که تعداد کاراکتر های اون id کم تر باشه و تعداد کاراکتر هایی که میشه توش استفاده کرد کم تر باشه، تعداد کم تری id یونیک میشه ساخت و در نتیجه احتمال اینکه دوتا id مثل هم ساخته بشه بالا تر میره
مثلا با 10 رقم + 26 حرف کوچک + 26 حرف بزرگ میشه برای یه id که ۱۰ کاراکتر داشته باشه ۶۲ به توان ۱۰ (ترکیب یا combinations) ساخت که uuid خیلی combinations بزرگ تر میشه
۲- من نمی دونم یوتوب داره از uuid استفاده می کنه یا نه. ولی کلا یکی از دلایلی که از uuid استفاده می کنن همینه اصلا که لازم نباشه هر دفعه چک کنن که یونیک هست یا نیست! احتمال اینکه دو تا uuid یکسان ساخته بشه خیلییییی کمه! و طبیعتا چک کردنش هر دفعه کلی کاست داره! یعنی می تونی بیای تعداد کاراکتر های id رو کم کنی ولی از اون طرف کاستش اینکه احتمال دوپلیکیت رو بالا می بری و شاید لازم باشه هر دفعه قبل insert بیای چک کنی که یونیک باشه
و در مورد نقدرت هم بگم که خیلی خوبه که نقد میکنی! بازم سعی می کنم حالا با مثال یا ساختن اسلاید های بیشتر ویدیو هارو قابل فهم تر کنم ولی با توجه به اینکه ویدیو ها تئوریه بعضی موقع ها طبیعیه چند بار ببیینی ویدیو هارو و با سوالتتم خیلی حال می کنم که مطرحشون می کنی !
یه مورد دیگم که فراموش کردم اینکه برای اینکه لازم نباشه id هارو قبل از اضافه کردن به دیتابیس برای یونیک بودن چکشون کنی احتمال داره به توجه به سیستمت مجبور باشی حتما سمت خودت جنریت کنی نه این که کاربر بتونه اون رو بفرسته!
منظورت اینکه گرفتن دیتا از دیتابیس با لینک کوتاهش انجام میشه نه Id؟
ببین نکتش اینجاست که وقتی کلید اصلیت uuid باشه اون داستانی که برای page گفتم پیش میاد یعنی میای ۱۰ لینک رو دیتاشون رو داخلی یک page میریزی و موقع گرفتن اون page رو باز می کنی و کل دیتای یک نفر روشه ...(توضیحش رو تو ویدیو دادم)
میشه index روی اون short link هم گذاشته باشی ولی در نهایت وقتی می خواد رو page ذخیره بشه از همون uuid استفاده می کنه دیگه
مثالتون از سیستم شورت لینک اونجایی که یو ال آیدی داریم و پنالتی میخوریم سوال ایجاد میکنه. آیدی سطر های شورت لیست مرتب در یک پیج در رم هست شما از کجا مطمئنی که همش مال یه کاربره؟ اصلا آیدی کاربر تو این جدول مگر موثر هست؟ خولندن دینا مگر یک به یک نیست؟خب چند کاربر به صورت همزمان اینسرت کنن تو یک پیج پشت سر هم دیتای دو کاربر هم مگر پشت سر هم در یک پیج با لاک های متوالی نوشته نمیشه؟
با فرض تعداد بچ رکورد ورودی کمتر از پیچ سایز
درود برشما
سوالات خیلی به جاست!
۱- در صورتی که مثلا سیستم به این شکل طراحی شده باشه که مثلا ۱۰ تا لینک بگیره و ۱۰ شورت لینک تحویل بده این امکان وجود داره که همه یک page مال یک نفر بشه!
۲- من منظورم id کاربر نبود منظورم id هر کدوم از اون short like هاست!
یعنی یه جدول داریم که توش هر سطر یه uuid داره یه short link یه link اصلی کاربر و مثلا یه created و deleted at و ...
۳- منظور از خوندن دیتا مگه یک به یک نیست رو نفهمیدم!
۴-ببین من فرضم بر این بود که کاربر ۱۰ تا لینک همزمان می فرسته! و با فرض اینکه پیج سایز از این ۱۰ تا بزرگ تر باشه، اره امکانش هستش که یه کاربر دیگه کوری بزنه و باز دیتا به ادامه اون page اضافه کنه