جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
محمد رضا
3 سال پیش توسط محمد رضا مطرح شد
32 پاسخ

بحث در رابطه با پیاده سازی نرم افزار برای چندین نفر ب صورت کاملا جدا

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

شما وقتی یه نرم افزار میزاری به سه تا شرکت مختلف میفروشیش یا هرچی
هر کدوم از اونا ممکنه بخوان پنج تا ده تا کاربر با سطح دسترسی های مختلف تعریف کنن

بعد برای اینکه همه داده هاشون یه جا هست از نظر جستوجو و سرعت عملکرد سیستم مشکلاتی که ممکنه پیش بیاد چی؟

تجربه ی انجام چنین پروژه ای رو داشتید که به صورت عمومی برای خرید و استفاده عموم قرار داده باشیدش؟
چه چالش هایی پیش رو هست؟
آیا اینکه توی تمامی روابط و جدول هامون یه ارتباط با کاربر خریدار ایجاد کنیم و بگیم این اطلاعات برای این کاربر هست
و توی تمامی فراخوانی ها هم بگیم اطلاعات همین کاربر رو برگردون کافیه؟
چیزی که به ذهنم میرسه همینه که همه ی جدول ها ارتباط با کاربر یا یه جورایی خریدار اصلی بگیرن حتی کاربر هایی که توسط اون کاربر اصلی ایجاد میشن
@mohaligateway
@mhyeganeh
@ali.bayat
@hesammousavi
@mehdi.shahabbasian


ثبت پرسش جدید
مهدی شاه عباسیان
تخصص : برنامه نویس
@shahabbasian 3 سال پیش آپدیت شد
3

سلام
من یک سیستم اتوماسیون اداری نوشتم و دقیقا همین طوره که شما میگید و ازش نسخه های متفاوت ارائه میدیم
کاری که ما میکنیم برای هر خریدار یک دیتابیس جدا و سابدومین ایجاد میکنیم و در اختیارش قرار میدیم

چالش اینجاست که اگه همرو تو یک بانک داده نگهداری کنین، روزای اول، تا سال های اول شاید شما به مشکلی نخوری اما اگر زمانی بزرگ شد پروژه چی ؟
ممکنه پروژه و تعداد کاربراش به جایی برسه که نتونی رو یک سرور هندلش کنی و باید ببریشون رو سرور های مختلف اونوقت چی ؟
ممکنه یک مشتری 500 برابر بقیه مصرف داشته باشه، تکلیف این چی میشه ؟ باید مثل بقیه هزینه بده و اما 500 برابر بقیه منابع رو درگیر کنه ؟
اگر کارش رسید به جایی که باید یک سرور اختصاصی برای همون یک نسخه تهیه کرد، حالا چجوری جدا کنیمش ؟
اگر یکیشون اونقدر قوی بود یا دشمنی داشت یا هرچی که یک نفر که نباید به جداول دسترسی پیدا کرد، بقیه هم باید قربانی این مورد بشن ؟

و کلی اگر و داستانهای دیگه پیش روی شماست

پیشنهاد میکنم حتما دیتابیس های هر نسخه و حتی فایل های اونا رو جدا قرار بدید


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
0

منم چیزی که به ذهنم اومده اینه که برای هرکاربری که پول میده و یک اکانت میسازه، یک دیتابیس جدا براش create کنی

اگر دقت کنید نسخه دمو و نسخه اصلی یک سیستم حسابداری کاملا متفاوته بدلیل اینکه وقتی اکانت رو شارژ میکنی یا میای خرید میزنی چنددقیقه سایت منتظر میمونه تا دیتابیس جدید برای شما بسازه (تصور من اینه) تا اطلاعاتتون تداخل نداشته باشه و برنامه نویس درگیر این نباشه فلان ایدی بوده اطلاعات نمایش نده یا بده و برای سطح دسترسی ها، بک آپ گیری و غیره..

چنین سیستم های معمولا از سرورهای اختصاصی استفاده میکنند بحث هزینه رو نمیدونم چطور هندل میکنن.


مهدی شاه عباسیان
تخصص : برنامه نویس
@shahabbasian 3 سال پیش آپدیت شد
3

سلام
من یک سیستم اتوماسیون اداری نوشتم و دقیقا همین طوره که شما میگید و ازش نسخه های متفاوت ارائه میدیم
کاری که ما میکنیم برای هر خریدار یک دیتابیس جدا و سابدومین ایجاد میکنیم و در اختیارش قرار میدیم

چالش اینجاست که اگه همرو تو یک بانک داده نگهداری کنین، روزای اول، تا سال های اول شاید شما به مشکلی نخوری اما اگر زمانی بزرگ شد پروژه چی ؟
ممکنه پروژه و تعداد کاربراش به جایی برسه که نتونی رو یک سرور هندلش کنی و باید ببریشون رو سرور های مختلف اونوقت چی ؟
ممکنه یک مشتری 500 برابر بقیه مصرف داشته باشه، تکلیف این چی میشه ؟ باید مثل بقیه هزینه بده و اما 500 برابر بقیه منابع رو درگیر کنه ؟
اگر کارش رسید به جایی که باید یک سرور اختصاصی برای همون یک نسخه تهیه کرد، حالا چجوری جدا کنیمش ؟
اگر یکیشون اونقدر قوی بود یا دشمنی داشت یا هرچی که یک نفر که نباید به جداول دسترسی پیدا کرد، بقیه هم باید قربانی این مورد بشن ؟

و کلی اگر و داستانهای دیگه پیش روی شماست

پیشنهاد میکنم حتما دیتابیس های هر نسخه و حتی فایل های اونا رو جدا قرار بدید


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش مطرح شد
0

اون قسمتی که گفتم یک دیتابیس جدید میسازه خواستم اضاف کنم که کانکشن استرینگ رو یجوری تعریف میکنن که خودکار متناسب با ایجاد شدندش تویی دیتابیس اصلی سایت یا توی یک فایل کنار پروژه شون کپی میکنن و بعنوان ریفرنس اتصال با پایگاه داده شون استفاده میکنن

یک مثال از کانکشن استرینگ در نرم افزارهای دسکتاپ با سی شارپ (مثال من اینه که توی ریجستری متغییر کانکشن رو ذخیره میکنم)
توضیح تصویر رو وارد کنید


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش مطرح شد
0

@mehdi.shahabbasian

چالش اینجاست که روزای اول، تا سال های اول شاید شما به مشکلی نخوری اگه همرو تو یک بانک داده نگهداری کنین اما اگر زمانی بزرگ شد پروژه چی ؟

متوجه نشدم خب مگه dbms که ما استفاده میکنیم mysql یا sql server نیست؟! اینا اگر قرار جوابگو ما در اطلاعات زیاد نباشه باید بریم سراغ دیتابیس های nosql


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش مطرح شد
0

ممکنه پروژه و تعداد کاربراش به جایی برسه که نتونی رو یک سرور هندلش کنی و باید ببریشون رو سرور های مختلف اونوقت چی ؟

فکر کنم دیگه اونجاش باید با مشتری تماس بگیری براش توضیح بدین دیگه!
مثلا من یکسرویس دارم روزانه کلی api ازش میگیرم و پول ناچیزی میدم ، چندوقت پیش زنگ زد گفت منابع سیستم ما رو داری درگیر میکنی اگر کارتون خلی مبرمه باید سرویس اختصاصی تهیه کنی و فلان..


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

@juza66
ایده ی خوبیه برای جدا کردن داده های کاربرای مختلف من هم بهش فکر کردم
اما چالش ساخت دیتابیس برای هر نفر یکم پیچیده تر از حالت اول هست که هر جدول با کاربر اصلی خریدار ارتباط داشته باشه
چون در اون حالت توی فراخوانی و واکشیه داده به راحتی میتونی بگی داده ای که مربوط به این کاربر هست رو بده
ولی توی حالتی که اسامی جداول و دیتابیس متفاوت میشه من چطوذ بیام به سیستم خودم که حالا مثلا لاراول هست بگم برای این واکشی برو و از این پنج جدول یا دیتابیس استفاده کن
پیچیدگیه خیلی بیشتری داره ب نظرم


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش مطرح شد
0

ممکنه یک مشتری ۵۰۰ برابر بقیه مصرف داشته باشه، تکلیف این چی میشه ؟ باید مثل بقیه هزینه بده و اما ۵۰۰ برابر بقیه منابع رو درگیر کنه ؟

فکر کنم باید اینجا حتما یک مانیتور روی منابع و کدوم دیتابیس یا کدام سرویس داره منابع زیادی مصرف میکنه داشته باشید، یا حداقل سیستمی بنویسین که منابع سیستم رو روی یک سرویس محدود کنید


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش مطرح شد
0

اگر کارش رسید به جایی که باید یک سرور اختصاصی برای همون یک نسخه تهیه کرد، حالا چجوری جدا کنیمش ؟

با یک بک آپ دیگه 😅


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

@mehdi.shahabbasian
در رابطه با خرید هاست برای هر نفر به صورت جدا و ساخت دیتابیس برای اونها کاری هست که ب صورت معمول انجام میدیم و خب راحت هم هست
ولی بحث مکانیزه کردنش هست
فک کن یه برنامه ساده تری مثل چاپ چکو اینا داری ک توی اینترنت هم هست ازشون
پنجاه نفر میان خریداری کنن
آیا برای هر نفر یک دامنه و هاست تعبیه کنیم؟ بیاییم به هر کاربر بگیم برو دامنه بخر؟


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش مطرح شد
0

اما چالش ساخت دیتابیس برای هر نفر یکم پیچیده تر از حالت اول هست که هر جدول با کاربر اصلی خریدار ارتباط داشته باشه

به نظر من خیلی پیچیده نیست و بسیار راه حل منطقی تری هست

ولی توی حالتی که اسامی جداول و دیتابیس متفاوت میشه من چطوذ بیام به سیستم خودم که حالا مثلا لاراول هست بگم برای این واکشی برو و از این پنج جدول یا دیتابیس استفاده کن

پروژه لاراولی شما باید یکبار برای کاربر دیگه ساخته بشه مثه سیستم لیارا


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

@juza66
این که بیایی یه نفر رو بزاری مانیتور کنه منابع سیستم رو ک ب نظرم ایده جالبی نیست ک یه هزینه هم واسه اون بدی
یا اگر تماس بگیری بگی داری درگیر میکنی ک ضعف سیستمته
یه برنامه طراحی میشه برای استفاده
باید انتظار حجم بالا رو داشت


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

پروژه لاراولی شما باید یکبار برای کاربر دیگه ساخته بشه مثه سیستم لیارا

موضوع سر مکانیزه کردن و برداشتن این موضوع هست که برای هر کاربر بیایی کاری رو انجام بدی
@juza66


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
0

@salar.mohammad2013
والا این نظر من بود ، توی ایجاد و کار با چنین سیستمی باید از افرادی که تجربه ساخت دارن مشاوره بگیرید . چیزهای که به ذهنم میاد رو خدمتتون گفتم، جواب سایر اساتید هم باید شنید و دید. 😊


مهدی شاه عباسیان
تخصص : برنامه نویس
@shahabbasian 3 سال پیش مطرح شد
1

@juza66 اگر های من همه به هم زنجیره ای وصلن
و برای اینکه بتونیم به راحتی یک نسخه یک مشتری رو از بقیه جدا کنیم این پیشنهاد رو دادم و خودمون هم بر این پایه جلو میریم

اما از اینکه به راحتی میگید با یک بک آپ من خیلی استرسی میشم
یاد روزی می افتم که باید یک دیتابیس 900 مگی رو فقط انتقال ساده میدادم و چقدر خون به جیگر شدم تا بالاخره با موفقیت انجام شد
حالا فکر کن این وسط یک بانک اطلاعاتی بسیار حجیم داری که مجبور شدی انتقالش بدی یا از بقیه جداش کنی، و علاوه بر انتقال کلی کوئری هم جلوته
نه خدایی این یکیرو من نیستم 😄

برای بعضی همگارم سازی ها و ... هم یکم به API فکر کنید


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

@mehdi.shahabbasian

برای بعضی همگارم سازی ها و ... هم یکم به API فکر کنید

واضح تر توضیح بدید لطفا


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
0

منظورشون اینه اگر آپدیتی دادید چطور قراره برای همه جداول ایجاد یا اپدیت بشه
یا چطوری فرم های جدیدمون رو برای همه بروز کنیم 😅


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

دقیقا چطورییی بروز کنیم؟؟؟؟؟؟😱😱😲😲
ای ام نووووب این api


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
0

یاد روزی می افتم که باید یک دیتابیس ۹۰۰ مگی رو فقط انتقال ساده میدادم و چقدر خون به جیگر شدم تا بالاخره با موفقیت انجام شد

توی mysql رو نمیدونم ولی توی Sql server بصورت بک آپ بخوای فایل رو دریافت کنی همون 900 مگ میشه نهایت 50 مگ! 😄


مهدی شاه عباسیان
تخصص : برنامه نویس
@shahabbasian 3 سال پیش مطرح شد
2

من که ترجیح میدم حتی شده دستی دونه دونه رو بروز کنم
اما اطلاعات همه کاربرارو نریزم رو هم تو یک جدول 😄


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
0

منم همین نظر دارم مهندس عباسیان
نظرم اینه که برای هر کاربر پولی یک دیتابیس و یک پروژه کپی بشه و اطلاعات و متغییرها تغییر کنه

برای اینکه درگیر این نباشی که کاربری که اکانت میسازه توی سایت درگیر دامنه و هاست نشه میشه براش میشه پورت های مختلف ساخت و ست کرد


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام