PDA

View Full Version : سوال: استفاده از فایل متنی txt به عنوان دیتابیس برنامه (ثبت اطلاعات)



systam
جمعه 28 فروردین 1394, 11:16 صبح
سلام
دوستان یه برنامه در حاله اخت دارم که دوست ندارم از دیتا بیس sql استفاده کنم
چون تعداد رکورد ها وقتی بالا بره لود اطلاعات زمان بر میشه
یکی از دوستان دیدم توی برنامه از فایل متنی برای دیتا بیس استفاده کرده بود که میگفت
بدون کوچکترین مکث برنامه باز و همه چی براحتی اجرا میشه

میخواستم از دوستان راهنمایی کنند ثبت اطلاعات کاری نداره ولی امنیتشو چطوری تامین کنم
مثلا وقتی کاربر بیاد یک ctrl+A یک backspase و یک ctrl+s بزنه فاتحه میخونه به همه چی ؟



ممنون میشم راهنماییم کنید

یا علی

hoseinharami
جمعه 28 فروردین 1394, 11:36 صبح
سلام
اینجاست که Enscription وارد کار میشه
یک سرچ بزن Enscrypter پیدا کن و دیتا ها رو اول رمزنگاری کن بعد توی فایل ذخیره کن
و وقتی هم می خوای بخونیشون اول رمزنگاری کن بعد به برنامه بفرست
اگر خواستی برات یک مثال می فرستم ببینی
فقط اینکه پیام خصوصی بده :لبخند:
پ.خ. شد

systam
جمعه 28 فروردین 1394, 13:36 عصر
سلام
به غیر از این دوست عزیز کسی دیگه نظری نداره

systam
شنبه 05 اردیبهشت 1394, 22:42 عصر
سلام
دوستان یه برنامه در حاله اخت دارم که دوست ندارم از دیتا بیس sql استفاده کنم
چون تعداد رکورد ها وقتی بالا بره لود اطلاعات زمان بر میشه
یکی از دوستان دیدم توی برنامه از فایل متنی برای دیتا بیس استفاده کرده بود که میگفتبدون کوچکترین مکث برنامه باز و همه چی براحتی اجرا میشه

میخواستم از دوستان راهنمایی کنند ثبت اطلاعات کاری نداره ولی امنیتشو چطوری تامین کنم
مثلا وقتی کاربر بیاد یک ctrl+A یک backspase و یک ctrl+s بزنه فاتحه میخونه به همه چی ؟



ممنون میشم راهنماییم کنید


یا علی
کسی نظری خاصی نداره

linux
شنبه 05 اردیبهشت 1394, 23:44 عصر
در اینجا انتخاب به نیازهای شما بستگی داره و شما نیازهاتون را مطرح نکردید. برای مثال برای خیلی از برنامه‌ها می شود از sqlite استفاده کرد.

بیتا حکمت
یک شنبه 06 اردیبهشت 1394, 01:24 صبح
الان من یه سوالی برام پیش اومد( اگر اجازه داشته بپرسم ) ، نوشتن و خواندن از فایل Txt سریعتر از کار با Sql هست ؟

danialafshari
یک شنبه 06 اردیبهشت 1394, 01:46 صبح
الان من یه سوالی برام پیش اومد( اگر اجازه داشته بپرسم ) ، نوشتن و خواندن از فایل Txt سریعتر از کار با Sql هست ؟

با سلام
همونطور که دوستان گفتن وسعت برنامه شما، بانک برنامتون رو انتخاب میکنه
مسلماً برای یک برنامه دفتر تلفن کوچک منطقی نیست که از بانک های بزرگی مثل Sql Server یا Oracle استفاده کنیم چون د صورت استفاده کاربر مجبور به نصب sql و در بسیاری مواقع دانلود حجم زیادی از اطلاعات برای یک برنامه ساده و کوچک میشه! بجاش بهتره از دیتابیس های کم حجمی مثل access, sqlite , xml , ... که هم حجم کمی دارند و هم بدون وابست استفاده کنیم
اگر برنامه هم کوچک بود بهتره بجای استفاده از فایل txt از xml استفاده بشه، txt یک dbms مخسوب نمیشه و همون فایلینگ میشه و فاقد دسته بندی هست
موفق باشید

Fotofan
یک شنبه 06 اردیبهشت 1394, 02:30 صبح
با سلام
همونطور که دوستان گفتن وسعت برنامه شما، بانک برنامتون رو انتخاب میکنه
مسلماً برای یک برنامه دفتر تلفن کوچک منطقی نیست که از بانک های بزرگی مثل Sql Server یا Oracle استفاده کنیم چون د صورت استفاده کاربر مجبور به نصب sql و در بسیاری مواقع دانلود حجم زیادی از اطلاعات برای یک برنامه ساده و کوچک میشه! بجاش بهتره از دیتابیس های کم حجمی مثل access, sqlite , xml , ... که هم حجم کمی دارند و هم بدون وابست استفاده کنیم
اگر برنامه هم کوچک بود بهتره بجای استفاده از فایل txt از xml استفاده بشه، txt یک dbms مخسوب نمیشه و همون فایلینگ میشه و فاقد دسته بندی هست
موفق باشید

اقا ما هم یه نظر داریم:لبخند: و با اجازه ی شما حرفتان رو رد می کنیم:متفکر:... البته در مورد اینکه فرمودید txt رو باید برای برنامه های ساده استفاده کرد....

من می تونم به جرات بگم با تلفیق کدهای regular و فایل های txt میشه یک دیتابیس غیر رابطه ای فوق قدرتمندُ حتی برقدرت تر از hadoop یا manodb یا .... ایجاد کرد. من خودم همچین چیزی رو ایجاد کردم اینجا هم یه بار مطرح کردم که توسعه بدیم ولی هیشکی علاقه نشون نداد. فرض کنید ذخیره ی تریلیون ها رکورد.(هرچند در بایگاه داده ی غیر رابطه ای جدول و رکورد معنایی ندارد ولی من اونو برگردوندم). و مدیریت آن ها. ذخیره ی میلوین ها رکورد در 0.001 ثانیه. خواندن و تزریق کویری های بیشرفته و بیچیده و دریافت میلیون ها رکورد یا میلیاردها رکورد در عرض 0.01 ثانیه. استفاده از الگوریتم سرباز و فرمانده که خودم بیاده سازی کردم برای کویری زدن های فوق سریع. (چیزی که افزایش اطلاعات == کم شدن سرعت خواندن و نوشتن دیگر معنایی ندارد)... و چندین امکان دیگر(همه و همه با فایل txt و regular البته یکمی هم خلاقیت و حوصله(مثلا یه سال حوصله):لبخند:)


ادرس تابیک کیک کنید
(http://barnamenevis.org/showthread.php?490486-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C-(DBMS)&highlight=fotofan)
البته یه کم بحث تو اخرا از مبحث اصلی دور شده. باید ببخشید:چشمک:

linux
یک شنبه 06 اردیبهشت 1394, 07:16 صبح
اقا ما هم یه نظر داریم:لبخند: و با اجازه ی شما حرفتان رو رد می کنیم:متفکر:... البته در مورد اینکه فرمودید txt رو باید برای برنامه های ساده استفاده کرد....

من می تونم به جرات بگم با تلفیق کدهای regular و فایل های txt میشه یک دیتابیس غیر رابطه ای فوق قدرتمندُ حتی برقدرت تر از hadoop یا manodb یا .... ایجاد کرد. من خودم همچین چیزی رو ایجاد کردم اینجا هم یه بار مطرح کردم که توسعه بدیم ولی هیشکی علاقه نشون نداد. فرض کنید ذخیره ی تریلیون ها رکورد.(هرچند در بایگاه داده ی غیر رابطه ای جدول و رکورد معنایی ندارد ولی من اونو برگردوندم). و مدیریت آن ها. ذخیره ی میلوین ها رکورد در 0.001 ثانیه. خواندن و تزریق کویری های بیشرفته و بیچیده و دریافت میلیون ها رکورد یا میلیاردها رکورد در عرض 0.01 ثانیه. استفاده از الگوریتم سرباز و فرمانده که خودم بیاده سازی کردم برای کویری زدن های فوق سریع. (چیزی که افزایش اطلاعات == کم شدن سرعت خواندن و نوشتن دیگر معنایی ندارد)... و چندین امکان دیگر(همه و همه با فایل txt و regular البته یکمی هم خلاقیت و حوصله(مثلا یه سال حوصله):لبخند:)


ادرس تابیک کیک کنید
(http://barnamenevis.org/showthread.php?490486-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C-(DBMS)&highlight=fotofan)
البته یه کم بحث تو اخرا از مبحث اصلی دور شده. باید ببخشید:چشمک:
بقیه rdbms ها مگر چیزی غیر این هستند! اونها هم اطلاعات را تو فایل باینتری ذخیره می‌کنند، فایل متنی هم یکجور باینری هست! مساله اینچا ۲ تا چیز شد استفاده از بهترین rdbms مناسب پروژه، تولید یک rdbms یا یک nosql دیتابیس جدید.

Fotofan
یک شنبه 06 اردیبهشت 1394, 14:47 عصر
بله حرف شما کاملا درست... ولی regular رو یادتون رفت. الگورتمش رو یادتون رفت. تا جایی که من تحقیق کردم هیچ کدوم اونا از regular ها استفاده نمیکنند. و بحث اگوریتم یباد شده هم خیلی پیچیده است



فقط هدفم اینه که بگم با فایل txt که باینری نیست میشه دیتابیس های خیلی قدرتمند تر از sql یا اوراکل ایجاد کرد.....

systam
یک شنبه 06 اردیبهشت 1394, 23:20 عصر
سلام
ممنونم از پاسخ سروران
برنامه مربوط بایگانی عکسه
برفرض مثال ما اومد از فایل txt استفاده کنیم برای امنیت باید چیکار کرد که در دسترس نباشه کاربر بتونه دستکاریش کنه

Mahmoud Zaad
دوشنبه 07 اردیبهشت 1394, 09:22 صبح
سلام
شما اطلاعات رو به یه روشی کد کنید بعد هم یه فرمت اختصاصی برای خودتون بسازید (و در حالت پیشرفته تر یه برنامه مثل managment studio که برای طراحی می تونید ازش استفاده کنید) یا پسوند فایل رو عوض کنید حالا چندتا اتفاق می افته اول اینکه کاربر میاد پسوند صوری شما رو به همون txt تغییر می ده خب اطلاعات کد شده هستند و چیزی ازش سر در نمیاره بعد میاد به قول شما همه یا بخشی از متن فایل رو حذف می کنه خب شما برای هر فایلی اینکار رو انجام بدید دیگه کار نمی کنه. برای اطمینان شما پسوند یه کپی از یه فایل pdf یا هر فایل دیگه ای رو به txt تغییر بدید و بازش کنید یه سری کاراکتر نامفهوم توش هست حالا همه یا بخشی از کاراکترها رو حذف کنید و فایل رو ذخیره کنید و دوباره پسوند رو به پسوند اولیه تغییر بدید دیگه فایل اجرا نمیشه که چیز بدیهی هست. منظور از این داستان این بود که کاربر مسئول این نوع دستکاری ها هست فقط شما encryption و decryption رو انجام بدید. این هم یه مثال ساده (http://www.codeproject.com/Articles/26085/File-Encryption-and-Decryption-in-C)

veniz2008
دوشنبه 07 اردیبهشت 1394, 15:24 عصر
سلام
دوستان یه برنامه در حاله اخت دارم که دوست ندارم از دیتا بیس sql استفاده کنم
چون تعداد رکورد ها وقتی بالا بره لود اطلاعات زمان بر میشه
یکی از دوستان دیدم توی برنامه از فایل متنی برای دیتا بیس استفاده کرده بود که میگفت
بدون کوچکترین مکث برنامه باز و همه چی براحتی اجرا میشه


سلام.
شما اطلاعات کمی رو درباره ساختار جدول (یا جداولتون) قرار دادید و مشخص نکردید چه حجمی از اطلاعات قراره استفاده بشه و آیا تمام اطلاعات جدول رو یکباره میخواید Load کنید یا بخشی از داده ها رو؟
از محتوای حرف شما چیزی که مشخصه حجم زیادی از اطلاعات رو دارید. سیستم فایلینگ و این مدل ذخیره کردن اطلاعات با این حجم داده ها دیگه فسیل شده.
SQL Server روز به روز امکانات بیشتری پیدا میکنه که بتونه روی چندین ترابایت اطلاعات (و میلیون ها رکورد) کار کنه که البته بعید میدونم حجم اطلاعات شما در این حد باشه.
شما راه های بسیار زیادی برای افزایش سرعت Load اطلاعاتتون دارید که باتوجه به نوع جداول و سناریوی شما ممکنه یک یا ترکیبی از چندتای اونها به دردتون بخوره :
1. ایندکس مناسب ( به نظر من یه ایندکس خوب برای جداول برنامه نویس در حد یه زغال خوب واسه مصرف مواد یه فرد معتاد هست!). فکر نکنید که ایندکس فقط به یه Clustered Index ختم میشه. NonCluster ها و خیلی از مواقع Covered Index ها سرعت اجرای کوئری های شما رو به شدت بالا می برن.
2. پارتیشن بندی :
جداولی که حجم زیادی از اطلاعات رو دارند و یه شاخص برای جداسازی اطلاعات دارند بطوریکه جستجوی شما براساس اون شاخص انجام میشه. مثلا فرض کنید چند میلیون سند حسابداری دارید که از سال 80 تا 94 هستند. به جای اینکه همه این اطلاعات در یک پارتیشن (پارتیشن پیش فرض خود SQL) باشند، می تونید اونها رو به چند بخش تقسیم کنید (مثلا اطلاعات 80 تا 83 توی یک پارت، 84 تا 87 توی پارت دوم، 88 تا 91 توی پارت سوم و ...). اینطوری موقع سرچ اطلاعات اس کیو ال به جای اینکه حجم گسترده ای از اطلاعات رو سرچ کنه مستقیما میره سراغ همون پارت ها و سرعت اجرای کوئری شما افزایش پیدا میکنه (به شرط اینکه شرط کوئری شما براساس اون شاخص جداسازی باشه که در مثال ما اون شاخص سال مالی بود).
3. ویژگی فوق العاده ای به نام Column Store Index که در sql 2012 بوجود اومد. سرعت اجرای کوئری های سنگین با این ویژگی به شدت افزایش پیدا کرده.
4. فشرده سازی اطلاعات ( Data Compression). جداولی که بصورت نرمال ایجاد میشن فاقد فشرده سازی اطلاعات هستند. فشرده کردن اطلاعات باعث میشه موقع load کردن اطلاعات تعداد page های کمتری از سمت sql درون حافظه load بشه و به این ترتیب سرعت کوئری ها افزایش پیدا میکنه ( در حالت معمول اطلاعات بصورت Row Base (بصورت رکورد به رکورد) درون Page ها ذخیره میشن و اگر فشرده سازی نباشه sql مجبوره که page های بیشتری از اطلاعات رو واکشی کنه).
5. استفاده از Stored Procedure در اغلب مواقع باعث افزایش سرعت کوئری ها شما میشه.
6. سبک کدنویسی شما در سمت برنامه کاربردی و چندین و چند راهکار دیگه ممکنه روی سرعت کوئری های ما تاثیر گذار باشه.
شما قبل از هر چیز باید ساختار جداولتون رو بررسی کنید و از کوئری خودتون هم یک Plan بگیرید ( با Ctrl + L یک Execution Plan و با Ctrl + M یک Actual Plan تهیه کنید) و اونو بررسی کنید که بیشترین Cost (هزینه) مربوط به کدوم بخش از کوئری شما میشه و تلاش کنید که هزینه اون بخش ها رو با روش هایی که چندتاش رو ذکر کردم و خیلی هاش رو هم اینجا فرصتش نیست که بگم، کاهش بدید.
هدف من از این جملات این بود که بگم برای افزایش سرعت کوئری هاتون، باید از روش ها و امکانات مناسب استفاده کنید. هر کدوم از این ویژگی ها باید سر جای خودش و با توجه به نیاز شما استفاده بشن.
موفق باشید.

محمد رضا فاتحی
سه شنبه 08 اردیبهشت 1394, 10:29 صبح
یه سوال؟
اگه نمی خواین از sql استفاده کنید چرا سراغ sqlite نمی رید؟امکانات اساسی و مهم sql رو داره و کار کردن باهاشم از فایل خیلی خیلی راحت تره