View Full Version : سوال: ایا sql میتونه با 4 یا 5 میلیار داده به خوبی کار کنه؟؟(کمک کنید فوریه)
baran_mehr
جمعه 13 دی 1387, 09:50 صبح
سلام دوستان عزیز
ببخشید یه سوال داشتم لطفا کمکم کنید چون باید خیلی فوری به یه جواب برسم.
من قبلا با sql و در حدود 5 میلیون داده کار کردم اما الان برای خیلی مهمه که بدونم ایا sql میتونه با اطلاعات خیلی زیاد در حدود 4 یا 5 میلیارد داده هم کار کنه؟؟؟
مهم کار کردن نیست میخوام بدونم ایا میتونه سرعت خوبی هم داشته باشه؟؟
ایا sql2000 داداری این قابلیت هست که با سرعت خوب با این داده ها کار کنه؟؟
ali_kolahdoozan
جمعه 13 دی 1387, 10:12 صبح
اگر منتظر هستید که جواب داده بشه که خیر برو از oracle استفاده کن . باید بگم اشتباه میکنید در صورت یک داشتن یک design صحیح و query های درست و optimize شده با بی نهایت دیتا هم به شما در بهترین حالت ممکن جواب میده . در ضمن روی شبکه config های شبکه و ...... هم موثر است . فردا ممکنه شما استفاده کنید و شبکه کارهای عزیز فقط توی سیستمها به شما ping تحویل بدن خوب قطعا در صورت مرطب بودن شرایط راحت میتونید کار کنید
baran_mehr
جمعه 13 دی 1387, 12:56 عصر
دوست عزیز به نظر شما من تو چند وقت میتونم اوراکل رو یاد بگیرم؟؟
دستوراتش با اسکیوال خیلی تفاوت داره؟؟
ومگه اوراکل چه چیزی داره که اسکیوال نداره؟؟
ممنون از راهنماییتون
baran_mehr
جمعه 13 دی 1387, 13:09 عصر
در صورت یک داشتن یک design صحیح و query های درست و optimize شده با بی نهایت دیتا هم به شما در بهترین حالت ممکن جواب میده .
پس با دستوراتی دست و کارا میشه این کار رو انجام داد؟
ali_kolahdoozan
جمعه 13 دی 1387, 13:41 عصر
متوجه حرف من نشدید . میگم اوراکل رو بیخیال شو . دانشت رو از سطح فقط جدول ساختن ساده توی sql بیار بالاتر اگر sql جواب نداد من جوابگو هستم
mpmsoft
جمعه 13 دی 1387, 16:35 عصر
بنده هم با نظر آقای ali_kolahdoozan موافق هستم
در بحث پایگاهای اطلاعاتی حجیم یکی نوع طراحی مطرح هست و دیگری تقسیم بندی اطلاعات
در این مورد شما می تونید توی همین سایت جستجو کنید، روشهای مختلفی مطرج شده
در مورد سوئیچ کردن روی اوراکل ، من از این جور دسته برنامه نویسان زیاد دیدم که بیشتر دهن بین هستند و بدون بررسی کردن نظرات دیگران یکدفعه تغییر مسیر می دن البته ببخشید اینطوری می گم
مشکل اینجاست که شما هنوز خوب SQL رو نشناختید و مطمئن باشید اگر برید روی اوراکل مشکلات بیشتری خواهید داشت به دلیل نداشتن تجربه کافی تو این زمینه
من توصیه می کنم در این جور پروژها حتما با یک شخص متخصص مشورت کنید.بی گدار به آب نزنید و فقط به فکر بستن پروژه نباشید
AminSobati
جمعه 13 دی 1387, 16:54 عصر
دوست عزیزم دیتابیسهایی با بیش از 50 میلیارد رکورد تحت SQL Server وجود دارند:
http://www.wintercorp.com/VLDB/2005_TopTen_Survey/TopTenWinners_2005.asp
Metric: Number of Rows
Platform: Windows
Usage: DW
تولائی
جمعه 13 دی 1387, 20:22 عصر
بنده هم با نظر آقای ali_kolahdoozan موافق هستم
در بحث پایگاهای اطلاعاتی حجیم یکی نوع طراحی مطرح هست و دیگری تقسیم بندی اطلاعات
در این مورد شما می تونید توی همین سایت جستجو کنید، روشهای مختلفی مطرج شده
در مورد سوئیچ کردن روی اوراکل ، من از این جور دسته برنامه نویسان زیاد دیدم که بیشتر دهن بین هستند و بدون بررسی کردن نظرات دیگران یکدفعه تغییر مسیر می دن البته ببخشید اینطوری می گم
مشکل اینجاست که شما هنوز خوب SQL رو نشناختید و مطمئن باشید اگر برید روی اوراکل مشکلات بیشتری خواهید داشت به دلیل نداشتن تجربه کافی تو این زمینه
من توصیه می کنم در این جور پروژها حتما با یک شخص متخصص مشورت کنید.بی گدار به آب نزنید و فقط به فکر بستن پروژه نباشید
ضمن تایید این پست تاکید میکنم که کسانی بتوانند به شما در زمینه sql server به شما کمک کنند بسیار بیشتر از کسانی هستند که بخواهد به شما در زمینه اوراکل کمک کنند. و نکتهی دیگری که در زمینهی استفاده از نرمافزارهای ساخت microsoft مهم است ابزارهایی است که در اختیارتان قرار میدهد که در بدو امر با مشکل کمتری بتوانید کار را شروع کنید.
reza10203045
جمعه 13 دی 1387, 21:21 عصر
بنده هم با نظر آقای ali_kolahdoozan موافق هستم
در بحث پایگاهای اطلاعاتی حجیم یکی نوع طراحی مطرح هست و دیگری تقسیم بندی اطلاعات
در این مورد شما می تونید توی همین سایت جستجو کنید، روشهای مختلفی مطرج شده
در مورد سوئیچ کردن روی اوراکل ، من از این جور دسته برنامه نویسان زیاد دیدم که بیشتر دهن بین هستند و بدون بررسی کردن نظرات دیگران یکدفعه تغییر مسیر می دن البته ببخشید اینطوری می گم
مشکل اینجاست که شما هنوز خوب SQL رو نشناختید و مطمئن باشید اگر برید روی اوراکل مشکلات بیشتری خواهید داشت به دلیل نداشتن تجربه کافی تو این زمینه
من توصیه می کنم در این جور پروژها حتما با یک شخص متخصص مشورت کنید.بی گدار به آب نزنید و فقط به فکر بستن پروژه نباشید
سلام دوستان
در مورد بحثی که گفتی یعنی در مورد روشها میشه بیشتر راهنمایی کنید
ar.shirazi
یک شنبه 15 دی 1387, 07:16 صبح
اگر منتظر هستید که جواب داده بشه که خیر برو از oracle استفاده کن . باید بگم اشتباه میکنید در صورت یک داشتن یک design صحیح و query های درست و optimize شده با بی نهایت دیتا هم به شما در بهترین حالت ممکن جواب میده . در ضمن روی شبکه config های شبکه و ...... هم موثر است . فردا ممکنه شما استفاده کنید و شبکه کارهای عزیز فقط توی سیستمها به شما ping تحویل بدن خوب قطعا در صورت مرطب بودن شرایط راحت میتونید کار کنید
دقیقا.
متاسفانه اوراکل هم شده است مثل جاوا
از هر 100 نفری که سراغ آن میروند فقط 1 درصد به خاطر قابلیت ها و علاقه و ... با آن کار میکنند و 99 درصد دیگر بیشتر به خاطر کلاس گذاشتن این کار را میکنند.
baran_mehr
یک شنبه 15 دی 1387, 18:28 عصر
ممنون از راهنمایی شما دوستان عزیز.
من با چند نفر از اساتید دانشگاه صحبت کردم و اونها گفتن تو این زمینه بیشتر سخت افزار مهمه که خیلی قوی باشه.
پس شما بر این عقیده هستید که SQL جوابگو هست و باید دستوراتی درست بکار ببرم. اما منظور از دستوراتی صحیح و خوب چیه؟؟
linux
دوشنبه 16 دی 1387, 08:58 صبح
ممنون از راهنمایی شما دوستان عزیز.
من با چند نفر از اساتید دانشگاه صحبت کردم و اونها گفتن تو این زمینه بیشتر سخت افزار مهمه که خیلی قوی باشه.
پس شما بر این عقیده هستید که SQL جوابگو هست و باید دستوراتی درست بکار ببرم. اما منظور از دستوراتی صحیح و خوب چیه؟؟
هم سخت افزار مهم هست هم نرم افزار و از همه مهمتر نیروی انسانی ماهر برنامه نویس ، مدیر شبکه ، مدیر دیتابیس.
1- طراحی درست دیتابیس
2- ایندکس گذاری مناسب
3- استفاده از روال های ذخیره شده به صورت بهینه.
برای سرور : یک سرور HP (http://h18004.www1.hp.com/products/servers/proliantdl580/index.html) این شکلی بخرید بهتر هست ،تقریبا 15-16 میلیون هست.
با رک و یو پی اس و این حرف شما روی 40 میلیون حساب کنید.
baran_mehr
دوشنبه 16 دی 1387, 12:01 عصر
منون از راهنمایی شما.
یعنی فقط در حات عادی 40 میلیون برای سخت افزار باید هزینه کرد؟؟
این رقم خیلی بالاست نمیشه با مبلغی مثلا نصفش یا کمتر این کار را به نحوه ای خوب انجام داد؟
linux
دوشنبه 16 دی 1387, 13:47 عصر
منون از راهنمایی شما.
یعنی فقط در حات عادی 40 میلیون برای سخت افزار باید هزینه کرد؟؟
این رقم خیلی بالاست نمیشه با مبلغی مثلا نصفش یا کمتر این کار را به نحوه ای خوب انجام داد؟
دیتا و کار شما 40 میلیون نمی ارزه؟ خوب سرور ارزون تر بخرید ، از 3-4 جا قیمت بگیرید.
baran_mehr
دوشنبه 16 دی 1387, 22:11 عصر
اگر به شما پیشنهاد این کار رو بدن یعنی کار کردن با این مقدار رکورد شما چه مبلغی رو پیشنهاد میکننید؟؟
با توجه به سخت افزار و کار خودتون؟
linux
سه شنبه 17 دی 1387, 13:43 عصر
اگر به شما پیشنهاد این کار رو بدن یعنی کار کردن با این مقدار رکورد شما چه مبلغی رو پیشنهاد میکننید؟؟
با توجه به سخت افزار و کار خودتون؟
هر چقدر کار مهمتر باشه ، هزینه ها هم بالا می رود، فرض کنید این دیتا اطلاعات مشتریان یک بانک یا یک موسسه اعتباری باشد و شماره حساب ها و تراکنشهای آنها هست. هر 1 دقیقه قطعی سیستم برای بانک کلی ضرر و زیان داره و ...
برای راه اندازه اولیه و شروع کار همراه با تهیه سرور و ... 60-70 میلیون و پشتیبانی ماهانه حداقل از 2 میلیون.
آقای ثباتی بیشتر می توانند کمک کنند. هر چقدر این کار ارزون تر انجام بشود ، بی اهمیت کردن کار در چشم مشتری هست.
AminSobati
سه شنبه 17 دی 1387, 15:52 عصر
اگر به شما پیشنهاد این کار رو بدن یعنی کار کردن با این مقدار رکورد شما چه مبلغی رو پیشنهاد میکننید؟؟
با توجه به سخت افزار و کار خودتون؟
دوست عزیزم این روش قیمت درآوردن نیست! پاسخ به چنین سوالی (که قیمت چقدر میشه) مستلزم دو سه جلسه حداقل 3 ساعته با کارفرماست. بعد از اون تحلیل و جزء بندی کارها توسط خود شما شروع میشه تا به هر قسمت کار یک قیمتی بدین. نهایتا مجموعش رو به کارفرما اعلام میکنید
منصور بزرگمهر
پنج شنبه 19 دی 1387, 20:13 عصر
دوست عزیز؛؛
جواب آقا/خانم linux کاملاً صحیح است، طراحی صحیح بانک اطلاعاتی بسیار مهم و پایه می باشد. ولی نمی دانم لزوم استفاده بانک اطلاعاتی شما برای چندین میلیارد سطر چگونه است. آیا دارید برای ترانزاکشن های یک بانک (مثل بانک ملی) برنامه می نویسید که ممکن است چندین میلیون (نه چندین میلیارد) سطر دارد. در این حالت نیز سایر دانشها (مثلاً اینجا حسابداری) الزام تهیه جداول و ارتباط آنها با یکدیگر را تعریف می کند، و اینجا یکی از بزرگترین اشکالات و اشتباهات و مسائل و (مصائب) برنامه نویسان کامپیوتر، عدم اطلاع از سایر دانشها (که تعیین کننده متدهای منطقی برای دسته بندی و تلخیص اطلاعات می باشد) مشخص میگردد، و آنها بدون دانش از سایر علوم می خواهند، اطلاعات را بصورت بسیار ابتدائی (منظور غیر علمی) دسته بندی و ذخیره کنند، بنابراین حجم اطلاعات آنها حجیم، و جستجو در آن غیر ممکن می شود.
(برای مثل علوم حسابداری اطلاعات را یک سال مالی دسته بندی و خلاصه انها را به سال بعد انتقال و از آن استفاده می کند، و یا برای مثال مهندسی صنایع، اطلاعات فنی را به بهینه ترین شکل تهیه و دسته بندی می نمایند، یا هر دانش دیگر نظیر فنی مهندسی اطلاعات را طبق قاعده ای منطقی و علمی دسته بندی و سپس تلخیص می نمایند)بهمین دلیل تمامی برنامه نویسان باید علاوه بر دانش کامپیوتر، دانش دیگری نیز باید بدانند، و همچنین برای همیشه در همان زمینه علمی برنامه نویسی کنند، و بدین ترتیب شخص برنامه نویس برای همیشه در شرکتی که برنامه آن را نوشته است، استخدام، و وظیفه نگهداری و ارتقا نرم افزار بعهده ایشان خواهد بود.
مثالهائیکه می توان با دسته بندی صحیح به اطلاعات کم حجم دست یافت، مثال سال مالی حسابداری می باشد، که اگر کسی حسابداری نداند، برنامه او بسیار عجیب قریب، و دوباره می گویم، بسیار بسیارعجیب قریب(من تجربه این را دیده ام) می باشد، و در این برنامه، همه حسابها یک طرفه، و خلاصه معلوم نیست این برنامه چه می باشد، و جداول چندین میلیاردی و چندین بیلیونی، و یک برنامه عجیب غریب، خدا فقط میداند چیست، ودر حالی که با دانش حسابداری، منطقی درست در شناسائی و ثبت و دسته بندی و تلخیص و .... اطلاعات ارائه، و اطلاعات بسیار منطقی و درست تعریف، و با هم ارتباط داشته، و البته، روشها صدها مختلف و از جمله سال مالی اطلاعات را دسته بندی می نماید، (و تاکید می کنم صدها روش منطقی دیگر نیز اطلاعات نهیه و ارتباط آنها مشخص میگردد)
من یادم می آید، همین چند سال پیش یک برنامه در خدا بیامرز Microsoft Access داشتم که قرار بود اطلاعات زیادی را ذخیره کند، (و آن موقع دانش حسابداری نداشتم) وقتی دیدم اطلاعات به چندین میلیون رسید، اطلاعات را بر اساس حروف الفبا در تک به تک جداول جداگانه تعریف کردم،(و با یک Select Case جدول مورد نظر را پیدا و سرچ می کردم) و خدا می داند اگر اینکار نمی کردم، چقدر برنامه من کُند و چقدر حجیم و چقدر گنگ بود، ولی حالا قدر دانش دیگر را دانسته، و روش بهینه تر طراحی دیتا بیس می کنم.
حالا اگر دانش دیگری نیز نمی دانید، با یک بیس و بینش بسیار قوی می توانید اطلاعات خود را با روشها مختلف دسته بندی و اطلاعات خود را خرد کنید، با تعریف سال مالی، با گروه بندی شماره های حساب در بانک، و با حروف الفبا و غیره ، و نصیحت اول آخر دانش دیگری بیاموزید، و اطلاعات خود را منطقی در دیتا بیس تعریف نمائید.
در آخر از ادرس آقای AminSobati در مورد بانکهای حجیم بسیار استفاده و لذت بردم، دوستان نگاهی به تعدد سطور در بزرگترین دیتا بیس بیندازند، حداکثر به 73,214 میلیون سطر در یک جدول رسیده است، (metric: Number of Rows --- Platform: Windows --- کمپانی: ComScore Networks Inc و DBMS : Sybase IQ) چرا که انها با یک دسته بندی بر اساس پایه علمی اطلاعات خود را گروه بندی و دیتا بیس خود را تعریف کرده اند.
در آخر همانطور که گفتم جواب آقای/خانم linux کاملاً صحیح و از لحاظ دانش کامیوتری اطلاعاتان درست ایجاد و در حالت حداکثر بهینه کامپیوتری تعریف شده است.
متشکرم از توجه دوستان، امیدوارم مورد توجه و استفاده قرار بگیرد.
AminSobati
پنج شنبه 19 دی 1387, 20:52 عصر
دوستان نگاه به تعدد سطور در بزرگترین دیتا بیس حداکثر به 72 میلیون سطر در یک جدول رسیده است،
میلیون یا میلیارد دوست عزیز!
منصور بزرگمهر
پنج شنبه 19 دی 1387, 20:57 عصر
سرچ کن میلیون
baran_mehr
پنج شنبه 19 دی 1387, 23:11 عصر
دوست عزیز مطمئنن عقل حکم میکنه که تا جایی که میشه یک جدول حجیم رو خرد کنیم و فکر نمیکنم این به دانشی خواص ربط داشته باشه . این راهی که شما گفتید که بر اساس حروف الفبا یکی از راههاست و چندین راه دیگه همانند این وجود داره.
به نظر من این دانش جزء همین دانش برنامه نویسی هست که خلاقیت و استعداد برنامه نویس را می رساند. در واقع برنامه نویس باید بهترین راه و صحیح ترین راه رو انتخاب کنه و با کمترین هزینه از نظر محاسباتی و زمانی به بهترین نتایج برسه.
به هر حال از تمامی دوستان که به این سوالم پاسخ دادن تشکر میکنم(مخصوصا AminSobati جان)
منصور بزرگمهر
جمعه 20 دی 1387, 08:39 صبح
موضوع اینجاست که خلاقیت واستعداد شخصی برنامه نویس کار فنی فراوانی نمی تواند انجام دهد، و این علوم و دانش مربوطه می توان چرائی طراحی دیتا بیس و کلی تر برنامه را مشخص کند، و باور نمی کنید بدون یک دانش خاص اطلاعات ما سر به فلک می زند، ولی روش نگهداری(کدام اطلاعات مهم و چگونه ذخیره شود) و دسته بندی و غیره غیره، اینقدر مهم می باشد، که هیچ وقت دانش شخصی و ابتکار شخصی ارائه کننده یک مدل منطقی از مسئله و راه حل آن ارائه نمی دهد، و خلاصه برنامه بدون پشتوانه سایر دانشها به معنی طرد 10،000 سال دانش بشری، و همانطور که گفتم اصلاً قابل مقایسه (قابل تصور) این برنامه ها نمی باشد.
linux
جمعه 20 دی 1387, 12:40 عصر
سرچ کن میلیون
72000 میلیون بوده که میشه 72 میلیارد
منصور بزرگمهر
جمعه 20 دی 1387, 21:30 عصر
من اعداد را دقیقاً نمی دانم (میلیون یا میلیارد - فکر میکنم میلیارد درست است، ولی)، ولی اگر میلیارد باشد سرچ این جدول بسیار مشکل است (حتی اگر ما ایندکس داشته باشیم)، و حتی باید کامپیوتر چند صد برابر سرعت نور سرعت داشته باشد، تا بتواند سرچ یا بدتر از آن استفاده توابع sum و .... و بدتر از آن توابع LookUp که اگر سرور ما چند ده (صد) CPU داشته باشد، توانائی این کار را ندارد.
ما اطلاعات حجیم داریم، ولی آنها در چندین جدول یا چندین دیتا بیس تقسیم می شوند، و حتی ممکن است دیتا بیس ها ما از لحاظ جغرافیائی نیز در چند شهر کشور مختلف باشد، ولی با تلخیص اطلاعات آنها به یکدیگر و همچنین دسترسی مستقیم بدان اطلاعات از طریق شبکه، ما توانائی جستجو و گاهاً محاسبه چندین بیلیارد از اطلاعات را داریم، ولی همه اطلاعات در یک جدول بعید می باشد. چندین CPU و چند ده (شاید صد) هد هارد درایو توانائی جستجوی 72 میلیارد سطر را ندارد، و شاید با نرم افزارهای خاص توانائی محاسبه بصورت تقسیم شده و موازی امکان پذیر باشد، ولی همانطور که گفتم اطلاعات در چندین جدول یا چندین دیتا بیس ذخیره و برنامه وظیفه مدیریت و نمایش آنرا دارد. برای مثال بانک ملی ما یا هر فروشگاه زنجیره ای برای حساب فروش، میلیارد که نه، بلکه تریلیارد ها سطر اطلاعات دارند، ولی تقسیم شده(جداول، دیتا بیسها، کامپیوترها، شهرها و کشورها، و ...)
البته من جائی کار می کردم که با سرورهای بزرگ نیز سر کار داشت، ولی اگر با یک جدول چندین میلیونی(10 میلیونی) من یک تابع LookUp بگیرم هر سطر حدود دو ثانیه طول می کشد تا اعداد مربوطه را برگرداند، (برای مثال بخواهید جمع هر سطر تا آن سطر را در یک ستون (سل) برگردانید)، و جدوال بزرگ توابع محاسباتی را طول می دهند، و نباید انتظار معجزه از کامپیوتر داشت.
خلاصه Design برنامه و بدنبال آن دیتابیس 90% ساخت یک برنامه را تشکیل می دهد، و این طراحی با توجه به علوم مربوطه طراحی و نیاز به دانش ورای کامپیوتر دارد. (ریاضیات، فنی مهندسی، مدیریت اقتصاد، ...)
linux
جمعه 20 دی 1387, 22:51 عصر
من اعداد را دقیقاً نمی دانم (میلیون یا میلیارد - فکر میکنم میلیارد درست است، ولی)، ......
مهندس بی خیال سخت نگیر
Results 1 - 10 of about 2,400,000,000 for english [definition (http://barnamenevis.org/url?q=http://www.answers.com/english&r=67&sa=X&oi=dict&ct=d&usg=AFQjCNGiZ9xaQkgOzFVe0Z9J_Z_C7y5yQQ)]. (0.23 seconds)
گوگل برای کلمه انگلیسی از دیتابیس چند میلیاردی خودش 2 و 4 دهم میلیارد رکورد را در کمتر از 23 صدم ثانیه جواب داد.
جداول در این حد و این دیتابیس ها دیتابیس های سازمان مقیاس هستند ، سخت افزار اینها هم سخت افزار معمولی که شما باهاش سرکار دارید نیستند ،
مثلا همین سرورهای بلید HP (http://h71028.www7.hp.com/enterprise/cache/80316-0-0-0-121.html) این دیگر تو این صنعت دم دسترینش هست.
منصور بزرگمهر
شنبه 21 دی 1387, 16:37 عصر
دوستان عزیر دوباره سلام؛؛
این قضیه را قبلاً من با ان کار کرده ام، همانطور که گفتم من با سرورهای بزرگ و حرفه ای سرکار داشته ام، و جدول مربوطه را در محیط اوراکل و لینوکس (من در SQL Server جدید می باشم)(دقیقاً یادم نمی آید 10 میلیون سطر یا 20 یا بیشتر (بعید است))با اعداد یاد شده ایجاد، و حتی کل ستونها ایندکس شده بوده(انواع مختلف امتحان کردم)، ولی در پرسجوهای تجمعی چه بدون گروه بندی سطور و یا بدون شرط، و یا با متغیرهای فوق باز حدود 1 تا 2 ثانیه(و حتی بیشتر) طول می کشید تا جواب دهد، و جداول بزرگ برای محاسبات طول می دهند، (حتی به نوع ستون های جدول نیز سرعت بستگی دارد - جداول فقط دارای Number خیلی سریعتر از جداول داری متن عمل می کنند)، و خلاصه من دوباره فکر نمی کنم جداول خیلی بزرگ شود،
حال دوباره اخیراً به سرورهای بزرگ دسترسی خواهم داشت، و از متخصصین امر سئوال می کنم، و خودم نیز تحقیق، و جواب را در این قسمت خواهم نوشت.
دوستان نیز تحقیق کنند، دوست مان باران مهر جدول 4 میلیاردی دارد، راه اشتباه نرود، من فکر می کنم کامپیوتر سرعت نور یا بیشتر ندارد، لطفاً کسی جواب دهد.
متشکرم از دوستان وقت بخیر
AminSobati
شنبه 21 دی 1387, 23:28 عصر
دوست عزیزم سرعت جستجو به پارامترهای زیادی بستگی داره. نمیشه اینقدر کلی فقط با بحث روی تعداد رکوردها به نتیجه رسید! موضوع Partitioning و Parallelism نقش بسیاری دارند...
ar.shirazi
یک شنبه 22 دی 1387, 14:03 عصر
من اعداد را دقیقاً نمی دانم (میلیون یا میلیارد - فکر میکنم میلیارد درست است، ولی)، ولی اگر میلیارد باشد سرچ این جدول بسیار مشکل است (حتی اگر ما ایندکس داشته باشیم)، و حتی باید کامپیوتر چند صد برابر سرعت نور سرعت داشته باشد، تا بتواند سرچ یا بدتر از آن استفاده توابع sum و .... و بدتر از آن توابع LookUp که اگر سرور ما چند ده (صد) CPU داشته باشد، توانائی این کار را ندارد.
ما اطلاعات حجیم داریم، ولی آنها در چندین جدول یا چندین دیتا بیس تقسیم می شوند، و حتی ممکن است دیتا بیس ها ما از لحاظ جغرافیائی نیز در چند شهر کشور مختلف باشد، ولی با تلخیص اطلاعات آنها به یکدیگر و همچنین دسترسی مستقیم بدان اطلاعات از طریق شبکه، ما توانائی جستجو و گاهاً محاسبه چندین بیلیارد از اطلاعات را داریم، ولی همه اطلاعات در یک جدول بعید می باشد. چندین CPU و چند ده (شاید صد) هد هارد درایو توانائی جستجوی 72 میلیارد سطر را ندارد، و شاید با نرم افزارهای خاص توانائی محاسبه بصورت تقسیم شده و موازی امکان پذیر باشد، ولی همانطور که گفتم اطلاعات در چندین جدول یا چندین دیتا بیس ذخیره و برنامه وظیفه مدیریت و نمایش آنرا دارد. برای مثال بانک ملی ما یا هر فروشگاه زنجیره ای برای حساب فروش، میلیارد که نه، بلکه تریلیارد ها سطر اطلاعات دارند، ولی تقسیم شده(جداول، دیتا بیسها، کامپیوترها، شهرها و کشورها، و ...)
البته من جائی کار می کردم که با سرورهای بزرگ نیز سر کار داشت، ولی اگر با یک جدول چندین میلیونی(10 میلیونی) من یک تابع LookUp بگیرم هر سطر حدود دو ثانیه طول می کشد تا اعداد مربوطه را برگرداند، (برای مثال بخواهید جمع هر سطر تا آن سطر را در یک ستون (سل) برگردانید)، و جدوال بزرگ توابع محاسباتی را طول می دهند، و نباید انتظار معجزه از کامپیوتر داشت.
خلاصه Design برنامه و بدنبال آن دیتابیس 90% ساخت یک برنامه را تشکیل می دهد، و این طراحی با توجه به علوم مربوطه طراحی و نیاز به دانش ورای کامپیوتر دارد. (ریاضیات، فنی مهندسی، مدیریت اقتصاد، ...)
گرامی
پس امکانات متعددی مثل partitioning و .. برای چه هستند؟
من خودم بر روی سرور معمولی در یک جدول با تعداد بالای 10 میلیون رکورد با یک ایندکس ساده، زمان جستجویم به 1 ثانیه هم نمیرسید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.