PDA

View Full Version : کدوم سریع تره؟؟



هانی هاشمی
سه شنبه 15 خرداد 1386, 22:51 عصر
سلام :لبخندساده:

یه سری اطلاعات دارم (از نوع text) که حجم خیلی بالایی دارن چیزی در حدود 1 گیگ .
می خواستم بپرسم اینا رو داخل پایگاه داده بزارم سریعتر بهشون می شه دسترسی پیدا کرد یا تو یه فایل؟؟؟

پیشاپیش ممنونم :قلب:

jhoseinii
سه شنبه 15 خرداد 1386, 23:56 عصر
مسلماً دیتابیس منظمتر و سریعتره
اما چطور میخواید این 1gb رو import کنید تو دیتابیس؟

peyman1987
چهارشنبه 16 خرداد 1386, 06:23 صبح
یک گیگ اطلاعات متنی میدونین چه حجمی از اطلاعاته!!!!!!!!؟؟؟؟؟؟؟؟؟؟
فکر کنم یه دو روزی برای ذخیره و دو روز هم برای بازیابیش نیاز دارین.
در هر صورت کار با همچین حجمی از اطلاعات خیلی سخته. اگه من جای شما بودم از فایل استفاده میکردم. چون حجم دیتابیسم خیلی بالا میره.

hisitech
چهارشنبه 16 خرداد 1386, 14:17 عصر
سلام

می تونم بپرسم چه کارهایی می خواهید با این اطلاعات انجام بدید ..... اطلاعاتتون آپدیت میشن یا نه حذف میشن یا نه ....... تغییر میکنن ؟ اضافه شدن به اطلاعات در انتها است یا در بین اطلاعات دیگه ؟ سورت شدن براتون استفاده ای داره یا نه ؟ به چه سبکی الان تو فایل تکست ذخیره شدن ؟
اگر این سوالها رو جواب بدین میشه تصمیم گرفت تو فایل باشن یا تو دیتا بیس.

(یک گیگا بایت تکست :عصبانی++:)

musiox
چهارشنبه 16 خرداد 1386, 21:55 عصر
بازیابی اطلاعات خیلی مهمه . اینکه این اطلاعات وارد شده با هم ارتباط دارن یا نه ؟ اصلا جدول بندی ذخیرشون لازمه یا نه ؟ اگه یه کم اطلاعاتتو دقیقتر بدی شاید بشه یه تصمیمی گرفت.

هانی هاشمی
چهارشنبه 16 خرداد 1386, 23:53 عصر
سلام
ببخشید که کم توضیح دادم دیروز خواستم کاملشون کنم اما کارتم تموم شد.

اطلاعاتم آدرس سایت های مختلف هستش. که هر کدوم از آدرس ها در خط جدا گانه ای است
منظورم از سرعت دسترسی کمتر اشغال شدن پردازش گر هستش.


اما چطور میخواید این 1gb رو import کنید تو دیتابیس؟
به مرور یعنی تو هر روز چند تا از این اطلاعات اضافه می شن .


اطلاعاتتون آپدیت میشن یا نه حذف میشن یا نهحذف و اضافه می شن ولی تغییر نمی کنند.


اضافه شدن به اطلاعات در انتها است یا در بین اطلاعات دیگه ؟ در انتها


سورت شدن براتون استفاده ای داره یا نه ؟ نه


به چه سبکی الان تو فایل تکست ذخیره شدن ؟در هم ،ترتیبی ندارن


اینکه این اطلاعات وارد شده با هم ارتباط دارن یا نه ؟نه ارتباطی ندارن


اصلا جدول بندی ذخیرشون لازمه یا نه ؟نه ولی می خوام هر وقت خواستم از ابتدا تا آخرش در دسترسم باشه

خیــــــــــــــــــــلی ممنونم .

hisitech
پنج شنبه 17 خرداد 1386, 07:45 صبح
سلام بر دوست عزیز :
خوب اینطور که فرمودید اگر فقط می خواهید از ابتدا تا انتهای فایل رو بتونید بخونید و با توجه به مواردی که پاسخ دادید بعید می دونم دیتابیس لازم داشته باشید و فقط یک پیمایش ترتیبی ساده کار شما رو راه می اندازه فقط چند تا مطلب دیگه یادم رفته بود بگم ..شما جستجو هم می خواهی انجام بدی؟ ... و مطلب بعدی اینه که آیا حذف کردن زیاد انجام میشه یا نه ...می دونید چون اگر زیاد حذف کنید فایل شما بیخود بزرگ میشه(fragmentation) و هر چند یک بار باید کلی وقت بذارید (البته شما که نه کامپیوترتون :بامزه:) و مثلا از انتها شروع کنید به شیف دادن سطر ها تا فضاهای خالی پر بشن ......

همونطور که گفتم اگر فقط خوندن فایل بصورت ترتیبی اهمیت داره همین فایل متنی کفایت میکنه
(با چند خط کد c++ کارتون با سرعت خوبی انجام میشه)
موفق باشید

هانی هاشمی
پنج شنبه 17 خرداد 1386, 12:46 عصر
سلام
نه نیازی به جستجو نیست.

دو تا سوال؟
1.یعنی فایل زود تر از دیتابیس باز می شه؟ با وجود این همه اطلاعات .
2.مگه دیتابیس اطلاعاتش رو فشرده نمی کنه؟؟


بازم ممنونم

musiox
پنج شنبه 17 خرداد 1386, 13:42 عصر
بالاخره این حجم اطلاعات فضای حافظه رو بیش از حد اشغال می کنه . اگه توی چند تا فایل براساس یه مولفه ای که داری تقسیمشون کنی سرعتت بیشتر میشه .

jhoseinii
پنج شنبه 17 خرداد 1386, 14:12 عصر
ببینید دوستان
این همه اصلاعات تکست کنار هم، مسلماً نیاز به بازیابی داره
بنظر من فقط 2 راه داره
اگر اصلاعات به هم ربطی ندارن، و فقط باید نمایش داده بشن، که هیچ
اما اگه نیاز به sort و search و edit و ... دارن، عاقلانه ترین روش اینه که بریزی تو db
حالا اینکه چطور بریزی تو db:
اگه با حجمش مشکل داری، میتونه یه تابع php بنویسی که فایل اصلی رو بخونه و همشو به تعداد وحشتناکی query تبدیل کنه و با یه حلقه for تهشو هم بیاری

someCoder
پنج شنبه 17 خرداد 1386, 14:37 عصر
حذف و اضافه می شن ولی تغییر نمی کنند.

نه نیازی به جستجو نیست.
من متوجه نشدم چطور بدون جستجو حذف میکنی! مگر لازم نیست رکوردی که میخواد حذف بشه رو پیدا کنی؟

هانی هاشمی
پنج شنبه 17 خرداد 1386, 16:07 عصر
نه نیازی نیست . از اولیش تا آخریش رو دونه دونه بازیابی می کنم و اگه اونطوری که می خوام نباشه پاکش می کنم .
و اگه اونطوری که می خوام باشه که کارامو باهاش انجام می دم و بدون هیچ تغییری می رم سراغ بعدی.

خیلی ممنونم از همه تون پس تو چند تا فایل می ریزمشون .

musiox
پنج شنبه 17 خرداد 1386, 22:40 عصر
اگه از پوینتر استفاده کنی دیگه فضای خالی تو فایلت پیدا نمیشه و همه کارات هم راحتتر میشه .
منظورم اینه که یه فایل هم برای ذخیره کردن پوینترات بساز . اگه خواستی بگو بیشتر توضیح بدم . ( منظورم ساخت یه ساختار شبیه دیتا بیسه )

هانی هاشمی
جمعه 18 خرداد 1386, 00:51 صبح
منظورتون چیه؟؟ می شه بیشتر توضیح بدین.؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

someCoder
جمعه 18 خرداد 1386, 07:22 صبح
منظورتون چیه؟؟ می شه بیشتر توضیح بدین.؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

اگر درست فهمیده باشم، منظور دوستمون اینه که توی یه فایل همه اطلاعات فله ای ریخته بشه و یه فایل دیگه هم به عنوان ایندکس داشته باشیم که آدرس شروع هر رکور در فایل اصلی توش ذخیره بشه. اینجوری برای اینکه یه رکورد رو پیدا کنی، از فایل ایندکس آدرسش پیدا میشه و مستقیم میری سراغش.
البته اگر اینجوری باشه، فکر نمی کنم برای ساختار مورد نظر شما خیلی مناسب باشه. اگر هم اشتباه میکنم که توضیح بدین جریان چیه منم بفهمم :متفکر:

ealvandi
جمعه 18 خرداد 1386, 08:21 صبح
اگر موضوع اصلی رو بیان کنید و بگید هدف اصلی از این کار چیه شاید راه حلهای بیشتری رو

بشه پیش پای شما گذاشت.

musiox
جمعه 18 خرداد 1386, 13:31 عصر
دو راه که بیشتر نداری . یکی اینکه خط به خط پردازش کنی . یعنی 0D 0A ( همون سر خط بعد ) جدا کننده رکوردات باشه . که php هم تابع داره که فایل رو تبدیل کنه به آرایه که هر خط یه عنصرش باشه و یا اینکه خودت یه توالی کاراکتری یا یه کاراکتر رو به عنوان جداکننده رکوردات در نظر بگیری . روش اول رو اگه پیاده ساز کنی که مشکل فضای خالی هم پیدا نمیکین ولی روش دوم همون اندیس گزاریه که دوستمون به روشش اشاره کرد . البته باید توجه بکنی که رکوردی رو که می خوای ثبت بکنی قبل از ثبت باید فیلترش کنی که نکنه یه وقت کاراکتر های جدا کندت توی اون رکورد باشه . البته این شامل کاراکتر های جدا کننده فیلدتم میشه . آره شاید روش اول به کار شما بیاد .

ealvandi
جمعه 18 خرداد 1386, 16:28 عصر
که php هم تابع داره که فایل رو تبدیل کنه به آرایه


لطفا اسم اون تابع رو بگید.

jhoseinii
جمعه 18 خرداد 1386, 17:00 عصر
فکر میکنم:


$arr = file("file.txt");

amirhosein
یک شنبه 20 خرداد 1386, 08:23 صبح
به طور کلی کار کردن با فایل سرعت بیشتری در مقایسه با دیتابیس بدست می دهد اما مدیریت دیتاها با خودتان است و لذا حجم کدنویسی و کار بیشتر می شود.درست مثل گوگل که برای ذخیره دیتاهایش با فایل کار می کند و در عوض مدیریت آنرا هم با الگوریتم های خودش در دست می گیرد.

oxygenws
یک شنبه 20 خرداد 1386, 09:09 صبح
:) قطعا پایگاه داده، اونم MySQL :)
یک گیگ متن چیزی نیست!!

ضمنا پایگاه داده به طور پیشفرض فشرده سازی نمی کنه، ولی توی طراحی دیتابیس ات می تونی خیلی شیرین کاری بکنی که سرعتش خیلی خیلی عالی بشه :)

موفق باشید.

smmwizard
یک شنبه 20 خرداد 1386, 09:16 صبح
من پیشنهادم فایله البته به شرطی که یک کلاس خوب برای انجام ارتباط با فایل بنویسی
به تجربه به من ثابت شده کار با فایل بسیار سریعتر از بانک اطلاعاتی است. (البته من با Perl با چیزی نزدیک به این حجم کار کردم که فایل بسیار بهتر جواب داد.)