1399-01-09 21:09 اتصال به استوریج
zahmah

 
سلام
آیا راهی هست که برای تمامی افراد یک شبکه محلی که به استوریج دسترسی دارند یک برنامه غیر شبکه ای نوشت(بدون نیاز به سرور) که بتونن اطلاعاتشون رو توی استوریج بریزند ولی از یک دیتابیس مشترک(درون استوریج) و همزمان استفاده نمایند؟
ممنون میشم اگه راهی هست راهنمایی بفرمائید.
1399-01-12 23:59
حاجی شریفی
مؤسس سایت
 
سلام
اگر همه نود دسترسی مستقیم به Storage را داشته باشند ، پس بله، میتوان برنامه ای برای ذخیره/بازیابی اطلاعات نوشت که نیازی به سرور واحد هم نداشته باشد.
ولی یک سری موارد همزمانی میتواند مشکل ساز شود.
اگر همه قرار باشند فایل ها را Read کنند که مشکلی نیست.
ولی اگر برخی نودها یک فایل را Read و برخی Write کنند ، خیلی باید دقت کنید.
و پروتکل دسترسی به این Storage هم مهم میشود که چه شرایطی برای دسترسی همزمان دارد (FTP,WebDAV,SMB,CIFS,...)

اگر با همان File-Share خود ویندوز این کار را انجام دهید ، در برنامه نویسی تنظیماتی برای کنترل دسترسی همزمان داریم که باید از آنها استفاده کنید.
System.IO.FileShare
در برخی موارد هم با ایده های ساده میتوان برخورد/تصادم و دعوا سر کار با یک فایل را تا حد امکان کاهش داد.
مثلا در زمان آپلود/ذخیره یک نسخه جدید از یک فایل موجود میتوان فایل را با یک نام جدید و موقتی آپلود/ذخیره کرد و آپلود/ذخیره فایل که تمام شد در یک لحظه فایل قبلی را Delete و فایل جدید را Replace کرد، تا فایل لحظه کوتاهی درگیر Write باشد و کمترین تداخل برای کسانی که در حال Read هستند رخ دهد و...


اما در خصوص دیتابیس ...
اگر منظورتان آن است که فایل دیتابیس را در Storage بگذارید و Share کنید و همه به صورت File-Based از دیتابیس استفاده کنند (؟!)
باید عرض کنم ایده جالبی نیست و با اصول DBMS های اصلی و مهم سازگار نیست. (مانند نسخه های صنعتی SQLServer,Oracle)

سالهای طولانی است که با این ایده برخورد نداشتم و رفتار دیتابیس های دیگر را هم در این مورد نمیدانم
ولی میدانم که Jet-OLEDB (هسته دیتابیس Office Access 2003) برای این مورد کاری کرده بود و یک فایل مخفی اضافه کنار فایل دیتابیس می ساخت که با آن همزمانی درخواست ها از چند Node را هندلر میکرد.
و در واقع میتوانست در همچین شرایطی صحیح به کار خود ادامه دهد.
باید روی دیتابیس های سبکتری مانند Ace-OLEDB یا SQLite و یا LocalDB تحقیق و تست کنید و ببینید کدام در این شرایط میتوانند کار کنند
چون سالهاست این کار را انجام نداده ام ، اطلاعی هم از برخورد و نحوه عملکرد دیتابیس ها فوق با این شرایط ندارم.
ولی استفاده از یک دیتابیس به این شکل را واقعا توصیه نمیکنم.