روشهاي جستجو !

CaptanBlack

Member
سلام

دوستان راستش من مي خواستم يه مساپلي را در رابطه با جستجو بگم و نظراتتون را بدونم !

من نمي دونم شما چطور مثلا وقتي يه جستجو را انجام مي ديد. چطوري پيمايش نتايج را انجام مي ديد !‌بذارين بيشتر توضيح بدم :

فكر كنيد كه يه جستجو انجام شده و مثلا 300 تا ركورد پيدا شده و مي خواهيم نشونشون بديم ! بحثي تو موضوع نمايش صفحه به صفحش نيست ! (اينو يادتون باشه كه من Asp كلاسيك كار مي كردم ) خوب حالا كاربر مي خواد بره صفحه دوم !‌ انجاست كه ما اولا نياز داريم دوباره جستجو كنيم و يه قسمت ديگه اي از اطلاعات را ايندفه نشونش بديم ! اينطوري مثلا اگه 10 يا 20 تا كاربر در حال جستجو باشند ! در هر صورت برنامه كند ميشه ! و خيلي ها ممكنه به Time out برسن !‌ حالا اين روشي هست كه من ازش استفاده مي كردم ( و دارم مي كنم ) . حالا مي خوام بدونم بچه هايي كه اينجا سابقه كاري با پايگاه داده ها را دارن - ميان يكم توضيح بدهند كه اگه راه بهتري مي دونند ! يه توضيحي بدهند !‌

من خودم فكر مي كنم اگه نتايج جستجو را بريزم توي يك فايل و زماني كه كاربر جستجوش تموم شد فايل را پاك كنم ! اولا ديگه 100 بار به ديتابيس Query نمي دهم !‌تازه ديگه معطل كاربراي ديگه كه جستجو مي كنند نميشم و ميرم سراغ فايل مورد نظر همون كاربر !

البته كماكان دنبال روشهاي بهتري هستم !‌
پيشاپيش از نظراتتون تشكر مي كنم !

وحيد رضا !
 

mazoolagh

Active Member
مثلا اگه 10 يا 20 تا كاربر در حال جستجو باشند ! در هر صورت برنامه كند ميشه ! و خيلي ها ممكنه به Time out برسن !

يا طراحي ديتابيس يا روش كار اشكال داره (شايد access هست؟) وگرنه 10 يا 20 كاربر بار قابل توجهي نيست!
 

CaptanBlack

Member
سلام !

راستش اينجاست كه انگار بايد مثال خفن تري زد !
آقا ميگيريم 500 كاربر آنلاين !‌يا هرچي كه دوست دارين ! ديتابيس را هم ميگيريم Access حالا مي خوام بدونم ! بهتره هر دفعه Query بديم يا يه بار جواب Query را بريزيم توي فايل و از اون استفاده كنيم ؟
 

Mikhak

Active Member
خوب عزيزه من چه فرقي ميكنه يا از فايل ميخوني يا از ديتابيس هر دوتاشم يه چيزه با اين تفاوت كه تو مثلا يه بار از يه فايل mdb ميخوني ميريزي تو يه فايل ديگه دوباره از فايل دومي ميخوني به نظر من كه كار بي مورديه ديتابيس رو گذاشتن واسه همين كه از فايل استفاده نكنن
به نظر من يا از همون ديتابيس استفاده كن يا روش بهتري رو انتخاب كن
----------
سينا
 

CaptanBlack

Member
سلام ميخك !

عزيز درست نامه را نخوندي !
ببين ُ! فرض كن من يه Select Query مي دهم به ديتابيس اكسس براي جستجو !‌حالا نتايج جستجو را ميريزم توي يه فايل و با نام فايل را ميگذارم Session كاربري كه جستجو را داده ! در نتيجه هر كاربر يك فايل روي سرويس دهنده براش ايجاد ميشه ! . وقتي كاربر داره صفحات را يكي يكي ميبينه :
اولا ديگه من Query نمي دهم و ديتابيس براي بقيه كاربران و كارهاي ديگه آزاد هستش !
ثانيا هر كاربر به فايل خودش متانظر ميشه و مطمپن هستم كسي Tiem out نميشه !

حالا فكر كنم متوجه شدي چرا از فايل استفاده كنم !‌

راستي همه هي مي گن روش ديگه ! اگه روش ديگه اي دارين باعث بشه كمترين Connection از نظر زمان را به پايگاه داشته باشيم خوب بگين !‌

البته من مي دونم كه يه جورايي دارم مثل اين تازه كارا گير مي دهم به سرععت و اين حرفا !‌ولي كاري كه دارم انجام مي دهم . ممكنه در آينده پشتيبانيش دست حودم نباشه !‌و نمي خوام پشت سرم حرف بزنند ! خلاصه از هر پيشنهادي ممنونم !

قربون همتون ! مخصوصا ميخك
 

mazoolagh

Active Member
بجاي اين فايل كه ميگي جدول موقتي درست كن. اين روش متداول هست و انجام ميشه ولي معمولا داخل خود فايل اصلي ديتابيس انجام نميشه بلكه يك ديتابيس جدا براي اين كار ساخته ميشه.
 

AliReza26

Active Member
mazoolagh گفت:
بجاي اين فايل كه ميگي جدول موقتي درست كن. اين روش متداول هست و انجام ميشه ولي معمولا داخل خود فايل اصلي ديتابيس انجام نميشه بلكه يك ديتابيس جدا براي اين كار ساخته ميشه.

به نظر من هم اين روش بهتر و متداول تر است...

در ضمن اگر از asp.net استفاده ميكني بهترين روش ريختن اطلاعات توي يك dataset است....چون اتصال را به ديتابيس در زمان كوتاهي انجام ميده و بعد از گرفتن اطلاعات اتصال را قطع ميكنه.....
 
سلام

عليرضا خان ! من شنيده بودم كه Data reader چون بصورت Stream اطلاعات را از ديتابيس ميگيره !‌خيلي سريع تره ! اغلب كد هايي كه ديدم ! Dataset را با DataAdapter پر مي كنند و تعريف زيادي توي Documenation مايكروسافت از DataAdapter نديدم ! اصلا مثل اينكه لايه اي كه توش كار ميكنه فرق داره ! اگه اطلاعات ديگه اي داري ممنون ميشم كه بگي !

Mazoolagh ! اين روش كه حالا شما پيشنهاد مي كني با ديتابيس ديگه اجرا بشه ! معمولا چه مواقعي الزامي هستش ! - من فكر نمي كنم سايتي كه روش كار مي كنم بيش از 100 يا ديگه حداكثر 200 كاربر آنلاين بيشتر داشته باشه !

در كل از همه دوستان ممنون !
وحيد رضا
 

miladmovie

Active Member
من این روش جستجو رو داخل hotscripts دیده بودم

هی قات می زدم چرا این کار رو می کنه :D
 

mazoolagh

Active Member
اين روش كه حالا شما پيشنهاد مي كني با ديتابيس ديگه اجرا بشه ! معمولا چه مواقعي الزامي هستش !
نميشه گفت چه موقع الزامي هست ولي به هر حال جاي جداول موقت توي ديتابيس اصلي نيست بخصوص اگه تعدادش هم زياد باشه.
در كل بهتره كه هميشه تعداد كل ركوردهاي برگشتي رو هر درخواست رو محدود كرد (بسته به موقعيت داره ولي 200-300 ركورد اوليه معمولا كافيه مگر اينكه گزارشي شبيه حسابداري باشه كه اونجا اوضاع فرق ميكنه) و فقط نتايج خلاصه رو نشون داد. به هر حال وظيفه sql همين پاسخ دادن به درخواستها هست و اگر كيفيت كار بطلبه كه شما درخواستهاي زيادي ازش بخواين حتما همين كار رو بكنين و بجاي فدا كردن كيفيت يه فكري براي بهبود وضع sql server بكنين.

اون روشي هم كه capitanblack همون اول بهش اشاره كرد
اگه نتايج جستجو را بريزم توي يك فايل و زماني كه كاربر جستجوش تموم شد فايل را پاك كنم ! اولا ديگه 100 بار به ديتابيس Query نمي دهم !‌تازه ديگه معطل كاربراي ديگه كه جستجو مي كنند نميشم و ميرم سراغ فايل مورد نظر همون كاربر !
براي حالتهايي كه طول عمر ركوردها كم نباشه خيلي خوبه. از sql خروجي xml ميگيري و اگر اطمينان داشته باشي كه همه كاربرها از IE استفاده ميكنن كه خروجي xml رو خيلي راحت ميشه توي صفحات html معمولي نشون داد و صفحه بندي كرد!
 

AliReza26

Active Member
desperados گفت:
سلام

عليرضا خان ! من شنيده بودم كه Data reader چون بصورت Stream اطلاعات را از ديتابيس ميگيره !‌خيلي سريع تره ! اغلب كد هايي كه ديدم ! Dataset را با DataAdapter پر مي كنند و تعريف زيادي توي Documenation مايكروسافت از DataAdapter نديدم ! اصلا مثل اينكه لايه اي كه توش كار ميكنه فرق داره ! اگه اطلاعات ديگه اي داري ممنون ميشم كه بگي !

Data reader چون بصورت Stream و به نوعي بصورت آنلاين و بدون قطع اتصال به ديتابيس كار ميكنه و لازم نداره كه اطلاعات حجيمي را در خودش نگه دار(بر خلاف dataset) از نظر سرعت سريعتر از dataset است اما به همان دلايلي كه گفتم به همان نسبت از كارايي اش در زمان سرويس دادن به چندين كاربر كم خواهد شد...

به نظر من استفاده از ديتاست نسبت به ديتاريدر به صرفه تر و بهتر ميباشد....

موفق باشيد....
 

CaptanBlack

Member
سلام

براي حالتهايي كه طول عمر ركوردها كم نباشه خيلي خوبه. از sql خروجي xml ميگيري و اگر اطمينان داشته باشي كه همه كاربرها از IE استفاده ميكنن كه خروجي xml رو خيلي راحت ميشه توي صفحات html معمولي نشون داد و صفحه بندي كرد!

ميشه توضيح بدي چطور ميشه خروجي XML گرفت ؟

مرسي - وحيد رضا
 

جدیدترین ارسال ها

بالا