یه بحثی شکل گرفته در مورد اینکه آیا از روی آیدی auto increment میشونه فهمید یه سایتی چقدر کاربر داره. این دغدغه امنیتی درستیه و یه سری راهحل هم داره.
در واقع این روشها اینطوری کار میکنن که آیدی عددی دیتابیس رو سمت سرور نگه میدارن و به کاربر نشون نمیدن؛ پس چیزی که به کاربر میدیم یه استرینگ یا عدد دیگهست و انتظار میره ما با سرعت مناسب بتونیم سمت سرور آیدیای که کاربر داره رو به آیدی دیتابیس تبدیل کنیم.
UUID
سادهترین ایدهای که به ذهن میاد همینه چون در واقع یه استرینگ رندومه. این روش از آیدی طولانیتره، کندتره و دیتابیس رو اذیت میکنه به عنوان کلید، ولی میتونه کمککننده باشه چون احتمال تکراری بودنش خیلی کمه، تولیدش خیلی راحته و نیاز به coordination بین سرورها نداره.
NanoID
مثل UUID ولی کوتاهتره و با الفبایی که شما میگید میتونه کار کنه، بنابراین میتونه URL safe هم باشه (پیشفرض هست).
SnowflakeID
یه آیدی عددی که از ترکیب تایماستمپ، نود و شماره ماشین تولید میشه، بنابراین عملاً هم میتونه یونیک باشه هم ترتیبی نیست. چون عددیه و رقمهای چپش بر اساس عدد زیاد میشن، در واقع صعودی هست و دیتابیس رو کمتر اذیت میکنه.
HashID
این روش آیدی رو به یه استرینگ رمزنگاری میکنه و سمت سرور قابل برگردوندن هم هست.
ایدههای دیگه هم میشه زد، مثلاً hash کردن آیدی به همراه salt، ولی به نظرم مزیت خاصی ایجاد نمیکنه نسبت به UUID.
Post #3274
3.96K
- 👍 19
- 👎 7
- ❤ 2