PDA

View Full Version : سوال: مشاوره برای برنامه بانک اطلاعاتی تحت شبکه(چند کاربره)



sara66
جمعه 20 مرداد 1391, 10:47 صبح
سلام
یک سرور داریم توی مرکز استان و 15 کلاینت توی شهرستان ها که تمام این سیستم ها با هم شبکه هستن.
قراره دیتابیس بر روی سرور باشه و کلاینت ها به اطلاعات این دیتابیس دسترسی داشته باشن.
از sql server استفاده کنم ؟ توی برنامه کلاینت یک AdoConnection بزارم و آدرس سرور و یوزر و پس را بدم ؟ دیگه تمام ؟ هیچ کار دیگه ای لازم نیست انجام بدم ؟
برای سطح دسترسی به دیتابیس چی ؟ روی دیتابیس سرور برای هر شهرستان یوزر تعریف کنم که فقط به جدول مربوط به خودش دسترسی داشته باشه ؟

میشه یک دید کلی از شیوه پیاده سازی این برنامه بدید ؟
مرسی

Felony
جمعه 20 مرداد 1391, 11:01 صبح
یک سرور داریم توی مرکز استان و 15 کلاینت توی شهرستان ها که تمام این سیستم ها با هم شبکه هستن.
چه نوع شبکه ای ؟ VPN ؟


از sql server استفاده کنم ؟ توی برنامه کلاینت یک AdoConnection بزارم و آدرس سرور و یوزر و پس را بدم ؟ دیگه تمام ؟ هیچ کار دیگه ای لازم نیست انجام بدم ؟+
امنیت هم براتون مهمه ؟ اگر بله ، پس کجای سناریوتون تعریف شده ؟!


برای سطح دسترسی به دیتابیس چی ؟ روی دیتابیس سرور برای هر شهرستان یوزر تعریف کنم که فقط به جدول مربوط به خودش دسترسی داشته باشه ؟
بله ، اینطوری اگر بعدا نیای به طراحی Log System یا ... شد انتخاب های بیشتر و منعتف تری دارید .

sara66
جمعه 20 مرداد 1391, 11:17 صبح
مرسی ، بستر را دقیق نمیدونم چی هست اما گفتن که ۲ مگابایت پهنای باند داریم که البته نرم افزار های دیگه هم روی این بستر در حال اجرا هستند.
بله امنیت مهم هست ، اما به چه شکل باید پیاده سازی بشه ؟

Felony
جمعه 20 مرداد 1391, 11:23 صبح
شما اول بپرسید بستر چی هست تا در مورد امنیتش راهنماییتون کنیم ، با توجه به اینکه نرم افزارهای دیگه هم در حال اجرا هستند احتمالا یا VPN دارن یا اینکه یک شبکه خصوصی برای خودشون راه اندازی کردن .

sara66
جمعه 20 مرداد 1391, 11:29 صبح
منظورتون از امنیت ، امنیت اطلاعاتی هست که روی بستر ارسال میشه ؟

Felony
جمعه 20 مرداد 1391, 11:38 صبح
وقتی دارید از SQL Server در سمت سرور استفاد ه میکنید و کلاینت ها قراره با ADO Connection به سرور متصل بشن امنیت اطلاعات در حال جابجایی در بستر ارتباطی به شما مربوط نمیشه ، این خود SQL Server هست که اطلاعات رو به صورت پکت هایی روی شبکه انتقال میده ، البته اگر امنیت خیلی مهم باشه اون موقع بحث Sniff و شکستن ساختار پکت ها و ... وسط میاد که در اون صورت بهتره اطلاعات مهم به صورت Encrypt شده در بانک ذخیره شده باشن و در سمت کلاینت بعد از دریافت Decrypt بشن تا حتی در صورت شنود شبکه اطلاعات مفیدی حاصل نشه .

بحث اصلی امنیت در سناریو شما نحوه اتصال به سرور ، نحوه ذخیره Connection String و اطلاعات کاربری از قبیل آدرس سرور ، Login Name و Password هست .

sara66
جمعه 20 مرداد 1391, 11:45 صبح
مرسی ، فردا باید بپرسم که بستر شبکه ای که استفاده می کنن چی هست.
اما این اطلاعات که گفتید مثل connection string و پسورد ، را که میخوام توی یک فایل کنار فایل اجرایی ذخیره کنم ، مگر به نوع شبکه مربوط میشه ؟

Felony
جمعه 20 مرداد 1391, 11:56 صبح
اما این اطلاعات که گفتید مثل connection string و پسورد ، را که میخوام توی یک فایل کنار فایل اجرایی ذخیره کنم ، مگر به نوع شبکه مربوط میشه ؟
نظرتون چیه که اگر من یک کارمند کنجکاو! بودم و کمی هم از نرم افزار سر در میاوردم فایل رو باز کردم و اطلاعات سرور رو دیدم ، یک Management Studio روی سیستمم نصب کنم و اطلاعات سرور رو وارد کنم و بهش متصل بشم و بعد روش یک کوئری Drop Database یا ... اجرا کنم ؟ یا اینکه با اتصال به سرور ازش گزارشاتی رو بگیرم که به هیچ عنوان حق دیدنشون رو از طریق برنامه نداشتم ؟!

در این صورت شما برنامه نویس رو مؤاخذه میکنن یا میگن کارمنده کنجکاو بوده ؟!

sara66
جمعه 20 مرداد 1391, 11:59 صبح
مرسی
آره خوب این اولین فکری بود که به ذهنم رسید، اما با خودم گفتم اطلاعات را کد می کنم ، بعد داخل فایل ذخیره می کنم ، آخه مگه روش دیگه ای هم هست ؟ یعنی میگین این اطلاعات روی سرور ذخیره بشه ؟؟ بعد یک برنامه کلاینت سرور داشته باشم که اطلاعات اتصال به دیتابیس را بتونه از سرور بخونه ؟!

Felony
جمعه 20 مرداد 1391, 12:51 عصر
نمیشه نسخه جامعی برای اینگونه موارد پیچید ، بستگی به درصد اهمیت امنیت برای خودتون داره ؛

- چقدر اطلاعات داخل بانک مهم هستند ؟
- کاربران کلاینت ها چه قشری هستند ( به کامپیوتر و نرم افزار مسلط هستند ) ؟

به جای استفاده از فایل از یک بانک Portable مثل SQLite یا Firebird استفاده کنید و اطلاعات اتصال رو داخلش به صورت کد شده نگهداری کنید .

barnamenevisforme
جمعه 20 مرداد 1391, 14:17 عصر
سلام
اگه کدهای فایل exe رو مورد بررسی قرار بدن اونوقت چطور؟

Felony
جمعه 20 مرداد 1391, 16:53 عصر
اگه کدهای فایل exe رو مورد بررسی قرار بدن اونوقت چطور؟
اگر اطلاعات اتصال بر اساس یک کلید خاص کد میشه نباید این کلید به صورت یک رشته ثابت در برنامه گنجونده بشه که راحت بشه درش آورد .

sara66
جمعه 20 مرداد 1391, 17:18 عصر
مرسی
نه کاربر ها در حد تایپ کردن هستن ، اطلاعات روی دیتابیس مهم هست اما نه اونقدر مهم که یکی بیاد بخاطرش فایل اجرایی را دیکد کنه !
خوب اگر فعلا از بحص امنیت رد بشیم ، برای انجام اینکار باید sql server را روی سرور نصب کنم و یوزرها را بسازم، شیوه دسترسی به sql server در دلفی به چه شکل هست ؟ یادم میاد قبلا که برنامه می نوشتم با odbc کار می کردم اما کامل یادم نمیاد.
بعد از نصب دیتابیس روی سرور چه تنظیماتی باید انجام بشه تا بتونم با دلفی به دیتابیس وصل بشم ؟ برنامه دو نسخه سرور و کلاینت داره ، نسخه سرور به کل دیتابیس دسترسی داره و بصورت مستقیم روی خود سرور دیتابیس اجرا میشه و نسخه کلاینت از راه دور به دیتابیس وصل میشه و دسترسی محدودی به دیتابیس داره.
روی سیستم کلاینت هم چیز خاصی باید نصب بشه ؟

sara66
شنبه 21 مرداد 1391, 11:24 صبح
بستر شبکه ، vpn هست.
هر شهرستان یک سری گزارش روزانه از دیتابیس میگیره ، میشه کاری کرد که روی هر شهرستان یک دیتابیس باشه و اون دیتابیس ها با دیتابیس مرکزی آپدیت بشن ؟ اینجوری سرعت دسترسی به گزارش ها بیشتر میشه.

Felony
شنبه 21 مرداد 1391, 11:37 صبح
بله ، در اون صورت باید روی کلاینت ها هم SQL Server رو نصب کنید و بعد بین سیستم ها Replication ایجاد کنید که ربطی به دلفی نداره ، برای ایجاد Replication هم به انجمن مربوطه (http://barnamenevis.org/forumdisplay.php?184-Replication) مراجعه کنید .

sara66
شنبه 21 مرداد 1391, 12:04 عصر
مرسی
معمولا توی این شرایط از همین replication استفاده می کنن ؟
یک مثال ساده از اتصال به sql سرور هم برای کلاینت ها و هم برای سرور هست ؟
مرسی

sara66
شنبه 21 مرداد 1391, 19:52 عصر
من از replication هیچی نمیدونم ، زمان زیادی لازم هست تا بتونم این موضوع را یاد بگیرم ؟
یعنی توی برنامه دلفی هیچ گونه تغییراتی داده نمیشه (برای پیاده سازی replication) ?
مرسی

Felony
شنبه 21 مرداد 1391, 20:25 عصر
من از replication هیچی نمیدونم ، زمان زیادی لازم هست تا بتونم این موضوع را یاد بگیرم ؟
پیاده سازیش کار چندان پیچیده ای نیست ولی برای بازدهی بهتر و ... یکسری ریزه کاری داره که با مطالعه و تحقیق میتونی بانک سازگارتر و پایدارتری برای Replication ایجاد کنی .


یعنی توی برنامه دلفی هیچ گونه تغییراتی داده نمیشه (برای پیاده سازی replication) ?
در حالت عادی خیر ، مگر اینکه بخوای از طریق برنامت کنترل خاصی روی Replication داشته باشی یا امکان خاصی رو پیاده کنی که باز هم موضوع خاصی نیست و نهایتا کار با همون Command ها هست .


اصول اولیه دیتابیس هست مگه میشه کسی دیتابیس کار کنه و جداولش رابطه نداشته باشند؟
اونی که شما میگی Relation هست نه Replication !

sara66
شنبه 21 مرداد 1391, 23:08 عصر
مرسی
دیتابیس روی سرور اصلی ، با دیتابیش شهرستان ها دقیقا باید مشابه هم باشند تا بشه replication را انجام داد ؟ Replication دو طرفه هست ؟ یعنی با تغییر اطلاعات توی شهرستان ، اطلاعات سرور اصلی تغییر پیدا می کنه و با تغییر اطلاعات روی سرور اصلی ، اطلاعات روی دیتابیس های شهرستان هم تغییر پیدا می کنه ؟
هر چند وقت اطلاعات بروز میشن ؟ یعنی کاربری که داره با دیتابیس سرور اصلی کار می کنه ، همیشه آخرین اطلاعات شهرستان ها را خواهد داشت ؟
اگر ارتباط شبکه بین شهرستان و مرکز استان برقرار نباشه چی ؟ سیستم شهرستان مثل قبل با دیتابیس کار می کنه ؟زمانی که شبکه وصل شد اطلاعات با سرور اصلی یکی میشن ؟

Felony
یک شنبه 22 مرداد 1391, 01:59 صبح
تمامی سوالاتی که پرسیدی قابل تنظیم کردن هست و هر طور که نیاز داشته باشی میتونی Replication رو ایجاد کنی ؛ این سوالات مربوط به بخش SQL Server سایت هست نه اینجا .

sara66
یک شنبه 22 مرداد 1391, 10:09 صبح
مرسی
سیستمی که قراره پیاده سازی بشه چیزی شبیه به سیستم های حضور و غیاب هست ...
هر شهرستان خودش باید اطلاعات پرسنل را تعریف کنه ، اطلاعات ورود و خروج پرسنل هم توسط سیستم خودکار ثبت میشه ، در نهایت هم کاربر شهرستان میتونه از ورود و خروج های ثبت شده گزارش تهیه کنه ، تمام شهرستان ها به همین شکل هستن. فقط مرکز استان باید نرم افزاری داشته باشه که بتونه اطلاعات ورود و خروج هر شهرستانی که خواست را بدست بیاره و ازشون گزارش تهیه کنه.
هر شهرستان هم فقط به اطلاعات ورود و خروج پرسنل های خودش کار داره ، یعنی شهرستان X به اطلاعات پرسنلی یا اطلاعات ورود و خروج پرسنل شهرستان Y هیچ کاری نداره . اما مرکز استان باید بتونه به تمام شهرستان ها دسترسی داشته باشه و از اطلاعات ورود و خروج پرسنل،گزارش تهیه کنه.

به نظر شما این دیتابیس را به چه شکلی پیاده سازی کنم ؟ برای هر شهرستان کلا یک دیتابی جدا بسازم که روی سیستم خود شهرستان باشه ؟ اینجوری دیگه نمیخواد روی سرور استان دیتابیسی باشه ! نرم افزار مرکز استان به تک تک این شهرستان ها وصل بشه و اطلاعات بگیره . یا هم که یک sql server هم روی سرور مرکز استان باشه که تمام دیتابیس های شهرستان ها را داشته باشه و بعد replication را انجام بدم و کاربر مرکز استان به این دیتابیس وصل بشه ...

sara66
یک شنبه 22 مرداد 1391, 10:16 صبح
سوالات مربوط به اس کیو ال را به بخش خودش انتقال میدم و بقیه سوالات مرتبط با دلفی را توی همین تاپیک میپرسم

sara66
یک شنبه 22 مرداد 1391, 12:33 عصر
سوالات مربوط به اس کیو ال را اینجا میپرسم. (http://barnamenevis.org/showthread.php?356069-%D9%85%D8%B4%D8%A7%D9%88%D8%B1%D9%87-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%DB%8C%DA%A9-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3)