اشتراکها
این ابزار امکان استفاده از سورس کنترل GIT در Visual Studio Team Fundation 2012 را فراهم میکند
نظرات مطالب
آشنایی با FileTable در SQL Server 2012 بخش 1
درود بر شما
پیشنهاد خوبی است. پیش از این نوشتاری در این باره نوشته بودم (هرچند منتشر نکرده ام.) ولی با یادداشت شما به این اندیشه افتادم که مروری بر این بحث در SQL Server 2012 داشته باشم و با ویرایشی نوین، در این تارنما منتشر کنم.
بازخوردهای پروژهها
تاریخ شمسی ویندوز و مجموعه آفیس
سلام؛
ممنون از مطلب بسیار مفیدتون. میشود از این روش برای فارسی سازی تاریخ در همه جای ویندوز و یا مجموعه آفیس مخصوصا اکسل و پروژکت و یا حتی شیرپویت استفاده نمود. فکر کنم در ویندوز 8 و 2012 از تابع دیگری استفاده میشود.
نظرسنجیها
سیستم عامل غالب مشتریهای شما کدام است؟
ویندوز XP
ویندوز 7
ویندوز 8
ویندوز 10
ویندوز سرور 2003
ویندوز سرور 2008
ویندوز سرور 2012
لینوکس
مک
ویندوز 7
ویندوز 8
ویندوز 10
ویندوز سرور 2003
ویندوز سرور 2008
ویندوز سرور 2012
لینوکس
مک
پیش از آشنایی با FileTable نیاز است که پیشینهای از شیوههای ذخیرهسازی فایل و یا بهتر بگویم BLOB در SQL Server را داشته باشیم. نخستین شیوهی نگهداری فایل استفاده از Image است که در SQL Server 2000 کاربرد داشت و هماکنون استفاده از آن به دلیل کاهش بسیار کارآیی منسوخشده است. به دلایل مشکلات بسیار فراوان Image همزمان بسیاری از طراحان پایگاه دادهها، جهت کاهش حجم جدولها و پیروی آن حجم پایگاه دادهها، فایل را در سیستمفایل نگهداری میکردند و تنها مسیر آن را در فیلدی از نوع کاراکتری در پایگاهدادهها ذخیره میکردند. این روش هرچند از حجم پایگاه دادهها میکاست ولی به دلیل عدم دخالت SQL Server در مدیریت فایلها مشکلات دیگری را به وجود آورد.
از SQL Server 2005 نوع دادهی varbinary(max) معرفی شد که برخی از چالشهای بهکاربری Image را کاست و دربارهی بسیاری از موارد مانند ذخیرهی عکس پرسنلی هنوز هم کاربرد دارد؛ ولی توجه داشته باشید که استفاده از این فیلد فقط برای فایلهای کمتر از 256 کیلوبایت سفارش شده است و برای بالاتر از آن، کارآیی کاهش فراوانی خواهد یافت.
در SQL Server 2008 نوع دادهی جدیدی به نام FileStream به وجود آمد به این شکل که یک FileGroup از نوع Data FileStream به پایگاهداده افزوده میشود و در واقع با یک پوشه در سیستم فایل در پیوند است. از این پس هنگام ساخت یک جدول به جای استفاده از نوع دادهی varbinary از نوع FileStream استفاده میکنیم با مد نظر داشتن این نکته که حتماً باید یک فیلد از نوع Uniqueidentifier هم در آن جدول تعریف شده باشد. شیوهی کار نیز به این صورت خواهد بود که خود رکورد در جدول ذخیره میشود و فقط محتوای فایل در آن مسیری از NTFS ذخیره میشود. برخلاف روش درج مسیر فایل در جدول که پس از حذف رکورد، فایل همچنان در سیستم فایل میماند؛ این بار با حذف رکورد فایل مربوطه نیز حذف خواهد شد. افزون بر این مدیریت پشتیبانی از فایلها نیز برعهدهی پایگاه دادهها خواهد بود. اندازهی فایلها در FileStream محدودیتهای پیشین را نخواهد داشت و شما به اندازهی حجم درایو هارددیسک میتوانید فایل در آن ذخیره کنید. نکتهی دیگر دربارهی فایلهای با حجم سنگین که میتوانید Stream مربوط به یک فایل را به صورت بخشبخش در سمت مشتری بارگذاری کنید و به او نشان دهید. در FileStream امنیت و تراکنش فایلها برعهدهی SQL Server است و از این دیدگاه بسیار سادهتر و کارآتر از FileSystem است. (برای آشنایی بیشتر با FileStream، این نوشتار از مهندس وحید نصیری را مطالعه کنید.)
گونهی FileTable از ویژگیهای نوین SQL Server 2012 است که تکمیلکنندهی FileStream است. FileTable آمیزشی از FileStream با hierarchyid و سیستم فایل ویندوز برای ارائهی تواناییهای نوین مدیریت BLOB در SQL Server است. FileTable همانگونه که از دو واژهی تشکیلدهندهاش پیداست؛ همزمان یک جدول و یک سیستم فایل معمولی است.
FileTable به هر روی یک جدول از پایگاهدادههای SQL Server است با یک تفاوت که ساختار آن از پیش تعریفشده است. ستونهای FileTable و نوع دادهی آن از پیش توسط SQL Server مشخص شده است. ستونهای تشکیلدهندهی FileTable دربرگیرندهی جدول زیر است:
هر ردیف از FileTable نمایندهی یک فایل یا پوشه در File System است. ستون path_locator که از نوع hierarchyid است نشاندهندهی مسیر یک فایل یا پوشه است. hierarchyid که از SQL Server 2008 معرفی شده است؛ بهترین نوع داده برای نگهداری ارتباط ساختار سلسلهمراتبی مانند چارت سازمانی، درخت تجهیزات یک کارخانه و یا در همین نمونه درخت فایلها و پوشهها است. پس میتوانیم از همهی امکانات hierarchyid در FileTable نیز برخوردار شویم. اینکه این فایل به ترتیب در چه پوشههایی قرار گرفته است یا اینکه این پوشه شامل چه فایلها یا پوشههایی خواهد بود. اینکه پوشههای همفرزند پوشهی جاری کدام است و یا یا توابع مربوط به جابهجایی فایلها و پوشهها.
از SQL Server 2005 نوع دادهی varbinary(max) معرفی شد که برخی از چالشهای بهکاربری Image را کاست و دربارهی بسیاری از موارد مانند ذخیرهی عکس پرسنلی هنوز هم کاربرد دارد؛ ولی توجه داشته باشید که استفاده از این فیلد فقط برای فایلهای کمتر از 256 کیلوبایت سفارش شده است و برای بالاتر از آن، کارآیی کاهش فراوانی خواهد یافت.
در SQL Server 2008 نوع دادهی جدیدی به نام FileStream به وجود آمد به این شکل که یک FileGroup از نوع Data FileStream به پایگاهداده افزوده میشود و در واقع با یک پوشه در سیستم فایل در پیوند است. از این پس هنگام ساخت یک جدول به جای استفاده از نوع دادهی varbinary از نوع FileStream استفاده میکنیم با مد نظر داشتن این نکته که حتماً باید یک فیلد از نوع Uniqueidentifier هم در آن جدول تعریف شده باشد. شیوهی کار نیز به این صورت خواهد بود که خود رکورد در جدول ذخیره میشود و فقط محتوای فایل در آن مسیری از NTFS ذخیره میشود. برخلاف روش درج مسیر فایل در جدول که پس از حذف رکورد، فایل همچنان در سیستم فایل میماند؛ این بار با حذف رکورد فایل مربوطه نیز حذف خواهد شد. افزون بر این مدیریت پشتیبانی از فایلها نیز برعهدهی پایگاه دادهها خواهد بود. اندازهی فایلها در FileStream محدودیتهای پیشین را نخواهد داشت و شما به اندازهی حجم درایو هارددیسک میتوانید فایل در آن ذخیره کنید. نکتهی دیگر دربارهی فایلهای با حجم سنگین که میتوانید Stream مربوط به یک فایل را به صورت بخشبخش در سمت مشتری بارگذاری کنید و به او نشان دهید. در FileStream امنیت و تراکنش فایلها برعهدهی SQL Server است و از این دیدگاه بسیار سادهتر و کارآتر از FileSystem است. (برای آشنایی بیشتر با FileStream، این نوشتار از مهندس وحید نصیری را مطالعه کنید.)
گونهی FileTable از ویژگیهای نوین SQL Server 2012 است که تکمیلکنندهی FileStream است. FileTable آمیزشی از FileStream با hierarchyid و سیستم فایل ویندوز برای ارائهی تواناییهای نوین مدیریت BLOB در SQL Server است. FileTable همانگونه که از دو واژهی تشکیلدهندهاش پیداست؛ همزمان یک جدول و یک سیستم فایل معمولی است.
FileTable به هر روی یک جدول از پایگاهدادههای SQL Server است با یک تفاوت که ساختار آن از پیش تعریفشده است. ستونهای FileTable و نوع دادهی آن از پیش توسط SQL Server مشخص شده است. ستونهای تشکیلدهندهی FileTable دربرگیرندهی جدول زیر است:
هر ردیف از FileTable نمایندهی یک فایل یا پوشه در File System است. ستون path_locator که از نوع hierarchyid است نشاندهندهی مسیر یک فایل یا پوشه است. hierarchyid که از SQL Server 2008 معرفی شده است؛ بهترین نوع داده برای نگهداری ارتباط ساختار سلسلهمراتبی مانند چارت سازمانی، درخت تجهیزات یک کارخانه و یا در همین نمونه درخت فایلها و پوشهها است. پس میتوانیم از همهی امکانات hierarchyid در FileTable نیز برخوردار شویم. اینکه این فایل به ترتیب در چه پوشههایی قرار گرفته است یا اینکه این پوشه شامل چه فایلها یا پوشههایی خواهد بود. اینکه پوشههای همفرزند پوشهی جاری کدام است و یا یا توابع مربوط به جابهجایی فایلها و پوشهها.
دنباله دارد...
نظرات مطالب
تغییرات مهم مقایسهی رشتهها در NET 5.0.
یک نکتهی تکمیلی: روش بررسی خودکار این موارد
فقط کافی است ابتدا آنالایزرهای توکار SDK جاری را فعال کنید:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <EnableNETAnalyzers>true</EnableNETAnalyzers> </PropertyGroup> </Project>
[*.cs] # CA1304: Specify CultureInfo # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1304 dotnet_diagnostic.CA1304.severity = error # CA1305: Specify IFormatProvider # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1305 dotnet_diagnostic.CA1305.severity = error # CA1307: Specify StringComparison for clarity # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1307 dotnet_diagnostic.CA1307.severity = error # CA1308: Normalize strings to uppercase # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1308 dotnet_diagnostic.CA1308.severity = error # CA1309: Use ordinal string comparison # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1309 dotnet_diagnostic.CA1309.severity = error # CA1310: Specify StringComparison for correctness # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1310 dotnet_diagnostic.CA1310.severity = error # CA1311: Specify a culture or use an invariant version # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1311 dotnet_diagnostic.CA1311.severity = error # CA1820: Test for empty strings using string length # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1820 dotnet_diagnostic.CA1820.severity = error # CA1834: Consider using 'StringBuilder.Append(char)' when applicable # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1834 dotnet_diagnostic.CA1834.severity = error # CA1858: Use 'StartsWith' instead of 'IndexOf' # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca1858 dotnet_diagnostic.CA1858.severity = error # CA2249: Consider using 'string.Contains' instead of 'string.IndexOf' # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2249 dotnet_diagnostic.CA2249.severity = error # CA2251: Use 'string.Equals' # Help link: https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2251 dotnet_diagnostic.CA2251.severity = error
نظرات مطالب
Owin چیست ؟ قسمت اول
ممنونم.
در حال حاضر من استفاده از helios رو پیشنهاد نمیکنم چون اولین محدودیتی که در helios جلب توجه میکند Minimum system requirements مورد نظر است.
برای توسعه پروژههای helios :
»Windows 8 یا Windows Server 2012
»NET Framework 4.5.1
»Visual Studio 2012 یا Visual Studio 2013
و برای Web Server نیز :
»Windows Server 2012
»NET Framework 4.5.1
»Full trust مورد نیاز است.
البته به گفته تیم توسعه پروژه helios، احتمال رفع این محدودیتها در آینده وجود دارد. در نتیجه به نظر من Microsoft.AspNet.WebApi.OwinSelfHost گزینه بهتری برای Owin Self Hosting است و از آن جا که در حالت Owin Self Hosting هیچ گونه وابستگی به IIS و البته System.Web نیز وجود ندارد در نتیجه مشکل performance نیز برطرف خواهد شد.
در حال حاضر من استفاده از helios رو پیشنهاد نمیکنم چون اولین محدودیتی که در helios جلب توجه میکند Minimum system requirements مورد نظر است.
برای توسعه پروژههای helios :
»Windows 8 یا Windows Server 2012
»NET Framework 4.5.1
»Visual Studio 2012 یا Visual Studio 2013
و برای Web Server نیز :
»Windows Server 2012
»NET Framework 4.5.1
»Full trust مورد نیاز است.
البته به گفته تیم توسعه پروژه helios، احتمال رفع این محدودیتها در آینده وجود دارد. در نتیجه به نظر من Microsoft.AspNet.WebApi.OwinSelfHost گزینه بهتری برای Owin Self Hosting است و از آن جا که در حالت Owin Self Hosting هیچ گونه وابستگی به IIS و البته System.Web نیز وجود ندارد در نتیجه مشکل performance نیز برطرف خواهد شد.