استفاده از Multidatabase Connection به صورت داینامیک
سلام دوستان
من برای تولید یک نرم افزار که به عنوان مثال اکانتینگ دارد و اطلاعات مشتری کالا و مالی را در خود نگه میدارد دارم از Codeigniterاستفاده میکنم .. ولی خوب برای جلوگیری از افزونگی داده راحتی در بک آپ و Load Balancing برای اینکه کویری های سنگین استفاده نشود اطلاعات لایسنس را و یوزر ها را در یک دیتابیس واحد و بقیه اطلاعات مانند کالا مشتری و مالی را در دیتابیس جدا به ازای هر شرکت میسازم .
در این صورت نیاز دارم که وقتی یک یوزر به سایت وصل میشود به دو دیتابیس کانکت شوم .
یک ) دیتابیس واحد برای کنترل لایسنس و اطلاعات کاربری .
دو ) ارتباط با دیتابیس مخصوص همان شرکت .
در این حالت یک راه حل وجود دارد آنهم اینست که اطلاعات کلیه دیتابیس های در database.php تعریف شود که تصور کنید ۲۰۰۰ مشتری چه شلوغی ایجاد میکنه در این فایل و حالت بعد این هست که اگر بشود به صورت داینامیک اطلاعات کانفیگ دیتابیس دوم از دیتابیس اصلی در موقع لاگین واکشی شود ولی خوب چطور میشود به صورت داینامیک کانکشن زد به دیتا بیس و کانشکن را زنده نگه داشت ؟
http://ellislab.com/codeigniter/user...onnecting.html
و اینهم در نظر بگیرید که دیتابیس های دوم برای شرکت ها به صورت اتوماتیک تولید میشود و ساخت شرکت در کل در لایه نرم افزار صورت میگیرد نه به صورت دستی .
ممنون .
نقل قول: استفاده از Multidatabase Connection به صورت داینامیک
فکر میکنم بهتره که توی طراحی دیتبایستون تجدید نظر بکنید چون جدا کردن دیتبایس ها سود خاصی براتون نخواهد داشت
اول اینکه mysql چند ملیون رکورد رو هم میتونه به خوبی پرازش کنه (البته به شرط طراحی درست و آپتیمایز بودن کوئری ها و تنظیمات دیتبایس )
حداقلش اینه که میتونید برای هر اکانت یه تیبل جدا بسازید نه یک دیتابیس جدا !
در هر صورت برای لود کردن دیتبایس به صورت داینامیک از توی کد میتونی اینجوری عمل کنید
$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$this->load->model('Model_name', '', $config);
// or as gorelative notes, to access multiple databases:
$DB2 = $this->load->database($config, TRUE);