TGViewer
DotNet | دات نت DotNet | دات نت @dotnetcode · 1.21K subscribers
Post #853 158
#SqlServer, #Storage
❇ذخیره‌سازی فایل در دیتابیس
با چه روشی انجام شود؟

varbinary?
file table?
...
حجم اطلاعات زیاد هستش
روش بهینه برای ذخیره‌سازی چه روشی ست؟
برای نگهداری دادهای LOB یعنی CLOB ها و BLOB ها روش‌های مختلفی وجود داره.
تعریف BLOB: مخفف Binary Large Object هست مانند Image
تعریف CLOB: مخفف Character Large Obeject هست مانند Text
اولین روش این هستش که ما مستقیماً داده رو در خود SQL در قالب یک فیلد از نوع VarBinary- XML-Nvarchar(MAX) و... ذخیره کنیم. اولین قوت این روش این هستش که کنترل مواردی مانند امنیت، جستجو، پشتیبانی Backup، عملیات مربوط به تراکنش و لغو آن و ... بر عهده خود SQL می‌باشد
اما نقاط ضعف این روش:
افزایش حجم LOGT - محدودیت حجم ۲ گیگابایت - وجود Fragmentation - استفاده زیاد از Buffer pool و Ram سیستم و ...
یکی از روش‌های رایج دیگر نگهداری فایل، خارج از دیتابیس می‌باشد. که معمولاً اصل فایل (مثلاً تصویر) رو در یک پوشه خاص ذخیره می‌کنند و آدرس اون رو در یک فیلد از نوع Varchar یا Nvarchat نگهداری می‌کنند. در این روش کاهش Fragmentation - عدم استفاده از Buffer Pool - افزایش حجم ذخیره‌سازی به اندازه دیسک و ... جزو مزیت‌ها می‌باشد
نقاط ضعف این روش:
در این روش SQL هیچ کنترلی روی این فایل نداره. مثلاً در زمان بک آپ گیری از دیتابیس، از این پوشه بک آپی گرفته نمی شه و کنترل مواردی مانند امنیت و تراکنش‌ها بر عهده SQL نمی‌باشد. به دلیل درگیری بین SQL و NTFS، دارای کد نویسی پیچیده می‌باشد و ....
و
اما یکی از روش‌های بسیار مناسب Filestream می‌باشد که از نسخه 2008 ارائه شد و مزیت‌های دو روش اشاره شده دارا می‌باشد. راه‌اندازی FileStream نیازمند تنظیمات سطح سرور و سطح Instance می‌باشد.
در ادامه به یک سؤال مهم جواب می‌دهیم:
چه زمانی برای ذخیره‌سازی اطلاعات از Filestream استفاده کنیم؟؟
پاسخ:
در تئوری گفته شده است که برای داده‌های با حجم بیش از یک مگابایت اما در عمل برای داده‌های با حجم بیش از ۲۵۶KB و برای داده‌های با حجم کمتر از ۲۵۶KB نوع Nvarchar (MAX) مناسب‌تر می‌باشد.

و اما ساختار دیگری که می‌توان از آن برای نگهداری فایل‌ها استفاده کرد File Table می‌باشد که از نسخه ۲۰۱۲ معرفی شد. در واقع متوان به این صورت گفت که File Table از همکاری بین File Stream و نوع داده‌ای Hierachy ایجاد شده است. در واقع با ایجاد FileTable ارتباط بین SQL, Ntfs رو برقرار کرده‌ایم. به این معنا که با حذف فایل از SQL، اطلاعات این فایل از NTFS نیز حذف می‌شود و با تغییر محل فایل در SQL، این تغییر مکان در NTFS نیز اعمال می‌شود.

محسن بندامیر
@Mohsen_Bandamir

کانال تخصصی SqlServer
@SQLSERVER_professional

✅ آشنایی با قابلیت FileStream اس کیوال سرور
http://www.dotnettips.info/post/331/
http://www.dotnettips.info/post/332/
http://www.dotnettips.info/post/333/
.NET Tips آشنایی با قابلیت FileStream اس کیوال سرور 2008 - قسمت اول مطلبی چندی قبل در مورد "ذخیره سازی فایل‌ها در دیتابیس یا استفاده از فایل سیستم متداول؟" منتشر گردید، جهت برشمردن فواید ذخیره سازی فایل‌ها در دیتابیس (+). اما معایب این نوع ذخیره سازی بررسی نشدند:الف) اختصاص یافتن قسمتی از بافر SQL Server به این امر.ب) با…
More from @dotnetcode
  1. Sep 16, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  2. Jul 10, 2026#مهندس_فکر_کن قسمت:4️⃣ 🎯مصاحبه‌کننده: ءCache Stampede چیست؟ فرض کن یک کلید در Cache داری:…
  3. Jun 12, 20261. Indexes منابع پیشنهادی این چالش که برای من اینها جذاب بوده و هست. A. Designing Data-Int…
  4. Jun 9, 2026آینده هوش مصنوعی و مهندسی کامپیوتر هوش مصنوعی مهندسی را نابود نمی‌کند، اما در سکوت در حال…
  5. Jun 4, 2026تحولی بزرگ در دنیای سی‌شارپ: ویژگی هیجان‌انگیز Union Types در C# 15! بالاخره یکی از جذاب‌ت…
  6. Feb 8, 2026👩‍💻 پستگرس رو ۲.۵ برابر سریع‌تر کن! تصور کن مغز متفکر دیتابیست (Parser) رو بدی دست هوش م…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →