PDA

View Full Version : گفتگو: نظرخواهی در مورد sql lite در php



beh3000
جمعه 11 مهر 1393, 21:17 عصر
سلام دوستان ...

میخواستم نظرتون رو در مورد در مورد کار با Sqllite توی php بدونم ... سایتی هست که براش باید سیستم گفتگوی آنلاین پیاده سازی بشه ... باید به فکر آینده سایت هم بود که با تعداد کاربر آنلاین زیاد هم جواب بده ... چطوره ( برای کم کردن بار mysql ) این قسمت چت با بانک اطلاعاتی sqllite نوشته بشه ( یک جدول داشته باشه که پیام ها توش ذخیره بشه ) ... ذخیره دائمی پیام ها هم توش ضروری نیست مثلا بعد از اتمام گفتگو میشه پیام ها رو حذف کرد یا اینکه هر روز یک کرون جاب اجرا بشه و پیام های گذشته رو حذف کنه بنابر این تعداد رکورد ها خیلی زیاد نخواهد بود ...


مسئله بعدی اینکه توی هاست اشتراکی هم میشه از sqllite استفاده کرد دیگه درسته ؟ نیاز به نصب چیز خاصی نداره که ... ؟ فقط یک فایل بانک اطلاعاتی داره دیگه ... ؟


از نظر سرعت درج و همینطور واکشی اطلاعات در مقایسه با mysql عملکردش به چه شکله ؟ ... ( این موضوع رو با رکورد های کم در نظر بگیرید ... مثلا با 100 میلیون رکورد احتمالا mysql سرعتش بیشتره و با رکوردهای کم چی ؟ با توجه به لینک زیر که sql lite سرعتش بیشتره نظر شما ...

http://www.sqlite.org/speed.html

نظرات کارشناسی شما ؟

Veteran
شنبه 12 مهر 1393, 08:17 صبح
در مورد گفتگوی انلاین و بدون دیتابیس یکسر به این لینک (http://www.rezaonline.net/blog/comet-simple-chat.html) برید

beh3000
شنبه 12 مهر 1393, 08:36 صبح
این لینک رو قبلا دیدم کار اقا رضاست ... توی اون پروژه هم یک فایل هست که پیام ها توش بصورت آرایه ای ذخیره میشه ... حالا من میخوام به جای فایل متنی فایل sqllite باشه ... فقط نظرتون رو بگید دوستان ... شاید هم نظرتون باشه همون مای اس کیو ال استفاده کنم ...

Veteran
شنبه 12 مهر 1393, 08:46 صبح
مسئله اصلی اینجاست


باید به فکر آینده سایت هم بود که با تعداد کاربر آنلاین زیاد هم جواب بده ...

خب،شما اگر ردو بدل کردن پیام هارو Comet کنید و به عهده دیتابیس نزارید،میتونه خیلی کمکتون کنه و بعد میتونید پیام هارو در دیتابیس ذخیره بکنید ( به هر دلیلی ) و مشکل خاصی بوجود نمیاد.
Mysql هم براحتی رکورد های بیش از چند میلیون رو جواب میده! ایندکس کنید،بهتر جواب میده.

beh3000
شنبه 12 مهر 1393, 10:49 صبح
پیام هارو Comet کنید و به عهده دیتابیس نزارید

از کامت استفاده میکنم ولی بازم بار روی دیتابیسه دیگه چجوری میشه بار روی دیتا بیس نباشه ! بازم برای سبکتر شدن کار گفتم که از sqllite استفاده کنم

قسمت آمار بازدیدهای سایت رو چی کار کنم هر صفحه ای که باز میشه باید یک رکورد در یک جدول ذخیره بشه اینم بارش روی دیتا بیس شاید اضافست ... اینم بیارم روی Sqllite چی ؟

Veteran
شنبه 12 مهر 1393, 11:08 صبح
نه دیگه فشار خاصی روی دیتابیس نیست، شما اطلاعات رو با کامت ارسال میکنید، پس دیگه هرثانیه برای بررسی وجود پیام جدید با ایجکس دیتابیس رو چک نمیکنید.پس فشار خاصی وجود نداره.
اینجا دیگه بحث "سبکتر" مطرح نیست، چه روی sqllite چه mysql فرقی نداره، مگر در بازیابی اطلاعات از دیتابیس! که سرعت مدد نظر هست، که بازهم بنظرم زیاد مهم نیست، چون نمایش پیام ها در بخش های خاصی مانند مدیریت استفاده میشه که اونهم گاهی اوقات چک میشه!

beh3000
شنبه 12 مهر 1393, 12:24 عصر
تا جایی که من میدونم روش کامت هم دیتا بیس رو چک میکنه ( مثلا هر 2 ثانیه یک بار ) فقط فرقش اینه که رفت و آمد به کلاینت خیلی کمتره نسبت به روش معمولی ولی باری که به دیتابیس وارد میکنن هر دوشون تقریبا برابره

روش معمولی : ار کلاینت میره سرور بعد چک میکنه چه پیام جدید بود چه نبود برمیگرده 2 ثانیه بعد دوباره میره و به همین منوال ادامه داره ...

روش کامت : از کلاینت میره سرور اگه پیام نبود 2 ثانیه همون جا ول میچرخه دوباره چک میکنه تا زمان ( مثلا 30 ثانیه ) میتونه اگه پیامی پیدا نکرد توی سرور بمونه ... بعد دوباره برمیگرده به کلاینت .. دوباره میره سرور دنبال پیام

رفت و آمد به کلاینت شاید یک دهم دربیاد ( بسته به سرعت چت کردن طرفین) ولی چک کردن دیتابیس هر دوشون هر 2 ثانیه یکبار انجام میشه


دوستان دیگه هم شرکت کنند توی تاپیک

جدا کردن بانک اطلاعاتی چت از mysql و استفاده از sqllite مزیتش بیشتره یا معایبش ؟

rezaonline.net
شنبه 12 مهر 1393, 13:22 عصر
این لینکی که دادید بالاش نوشته
Note: This document is very very old. It describes a speed comparison between archaic versions of SQLite, MySQL and PostgreSQL.
همچنین مقایسه بین sqlite2 هست در صورتیکه الان sqlite3 استفاده میشه .
من خودم برای کش کردن ازش استفاده میکنم خوبه ، اما برای رکورد بالا اصلا مناسب نیست .

اگر مثلا ذخیره موقت هست حتی میتونید از apc هم استفاده کنید که سرعتش خیلی زیادتره . سپس داده ها رو انتقال بدید به دیتابیس .
ولی در کل insert روی mysql مشکل چندانی نداره و کندی پیش نمیاره حتی اگه میلیون رکورد هم داشته باشید .
برای خوندن از دیتابیس هم چون احتمالا براساس آپدیت زمانی نیاز دارید یک فیلد در نظر بگیرید به اسم time برای پیغام ها که ایندکسش هم بکنید تایپش رو هم بذاری int 10 منتها مقداری که براش در نظر میگیرید از تابع time() نگیرید صرفا بلکه به این صورت استفاده کنید time()-1300000000 .
شروع کنید پروژه رو نهایتا توی کار مشخص میشه بعضی جاهارو چیکار کنید

beh3000
شنبه 12 مهر 1393, 13:37 عصر
در مورد apc میتونید بیشتر توضیح بدین که چیه ؟ چجوری استفاده میشه ؟

در مورد کش کردن با sqllite هم توضیح بدین ممنون میشم . داده هایی که زیاد استفاده میشن رو توی sqllite ذخیره میکنین ؟


این سیستم هایی چتی که هست مثل فیس بوک یا مثل کلوب ... وقتی کاربر داره تایپ میکنه مینوسه "در حال نوشتن پیام" اون چه جوریه ؟

rezaonline.net
شنبه 12 مهر 1393, 15:49 عصر
در مورد apc میتونید بیشتر توضیح بدین که چیه ؟ چجوری استفاده میشه ؟
کش داخلی پی اچ پی هست که توی رم ذخیره میشه .
http://php.net/manual/en/book.apc.php


در مورد کش کردن با sqllite هم توضیح بدین ممنون میشم . داده هایی که زیاد استفاده میشن رو توی sqllite ذخیره میکنین ؟
کش های معمولی توی فایل ذخیره میکنن sqlite هم همینطور اما دقت sqlite خیلی بیشتر هست .

مثالشم اینجا نوشتم
http://barnamenevis.org/showthread.php?469894-%D9%81%D8%B1%D8%A7%D8%AE%D9%88%D8%A7%D9%86-%D8%B9%D9%85%D9%88%D9%85%D9%8A-%D8%AC%D9%87%D8%AA-%D8%AA%D8%B3%D8%AA-%D8%AF%D9%82%D8%AA-%D8%B3%D8%B1%D9%88%D9%8A%D8%B3-%D8%A2%D9%85%D8%A7%D8%B1%DA%AF%D9%8A%D8%B1-%D8%AC%D8%AF%D9%8A%D8%AF-%D9%88%D8%A8%D8%B4%D9%85%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AA-%DA%A9%D8%A7%D9%85-webshomar-com&p=2113478&viewfull=1#post2113478


این سیستم هایی چتی که هست مثل فیس بوک یا مثل کلوب ... وقتی کاربر داره تایپ میکنه مینوسه "در حال نوشتن پیام" اون چه جوریه ؟
من با این جور سایتها کار نکردم (شاید تنها برنامه نویسی باشم که از شبکه های اجتماعی خوشم نمیاد و فعالیتی ندارم :لبخند:)
ولی احتمالا comet استفاده میکنن