מאמרים בנושא ‏תכנה ומחשבים‏.

להבין את Berkeley DB...

ב־יום שלישי, 1 בינואר 2008, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏0 תגובות

מי שעוקב אחרי התפתחות של CppCMS בוודאי שם לב שאני בחרתי להשתמש ב-Berkeley DB כתשתית עבורו במקום להשתמש בפתרונות בסיסי SQL סטנדרטיים. בכתבה הזו, אני מסביר על בסיס הנתונים הזה ודן ביתרונות ובחסרונות שלו מבחינת היישום והמפתח.

 

Understanding Berkeley DB

‏There are many high quality, high performance, both open and closed source data bases available on the market: MySQL, PostgreSQL, Firebird, Sqlite, Oracle, MS SQL etc. These are industry standard SQL databases that usually power many web sites. The well known LAMP stack is de-facto standard for the web hosting companies.

So why had I chosen to use Berkeley DB instead of many other data bases that most of web technologies work with?

There are several reasons:

1. Outstanding performance. 2. Direct C++ API instead of SQL one. 3. It is as mature as any other databases.

In order to understand the advantages of Berkeley DB over standard SQL data bases we need to understand the architectures of typical DB.

לכתבה המלאה

בדיקות ביצועים של CppCMS.

ב־יום שישי, 28 בדצמבר 2007, מאת ארתיום; פורסם תחת: תכנה ומחשבים, CppCMS; ‏0 תגובות

ביצעתי בדיקות ביצועים למערכת התוכן החדשה.

התוצאות כאן

מי שראה אותם כבר אתמול, כדאי להכנס שוב, עדכנתי כמה דברים.

CppCMS יצא לדרך...

ב־יום חמישי, 27 בדצמבר 2007, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏3 תגובות

היום העליתי בלוג ראשון שמבוסס על CppCMS. זה הבלוג שבו אני אסקור את הפיתוח שלו אפרסם חדשות ואבדוק את CppCMS במצב אמיתי.

רשימת קישורים:

אשמח לקרוא תגובותיכם גם פה וגם שם.

C++/C, עיבוד טקסט ומה שביניהם...

ב־יום ראשון, 9 בדצמבר 2007, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏14 תגובות

כחלק מהעבודה על CppCMS רציתי להוסיף מודול פשוט שיאפשר להכין תוכן מאמרים. לפני עמדו שתי אפשרויות:

  1. להכניס איזשהו מודול שצד הלקוח -- אחד מעורכי JavaScript הנפוצים שנותנים סביבת WYSIWYG "הנוחה".
  2. להכניס רכיב שיודע לתרגם איזשהו סוג של markdown ל-html.

הפתרון הראשון מביא מספר בעיות:

  1. אני לא סובל WYSIWYG באופן כללי ומתעצבן בכל פעם מחדש שאני עורך כתבות בבלוג הזה. כי יש תמיד משהו שמתנהג לא כמצופה.
  2. מעטים מעורכי WYSIWYG תומכים בעברית כראוי.
  3. מעטים מהם תומכים בכל הדפדפנים כולל Konqueror. (למשל, אני לא יכול לעבוד איתו ב-WordPress וזה די מעצבן).

אז התחלתי לבדוק את נושא markdown, כי הסימנים שלו נייטרליים לכיווניות, מה שהופך אותו לכלי מאוד אטרקטיבי לכתיבה בעברית; ובאופן כללי הוא די נוח לעבודה. כאן הציפתה לי הפתעה: לפי ויקיפדיה, ל-markdown יש מימוש ב-13 שפות החל מהנפוצות כמו PHP/Python/Perl/C#/Java ועד ליחסית אקזוטיות כמו Haskell או Lisp, אבל מה... אין C++/C. זה היה די מאכזב, אפילו שקלתי לבדוק כיצד לקרוא ל-Haskell מתוך C על מנת להתממשק עם ספריה מוכנה.

אז התחלתי לחשוב: "מה הגורם לכך ש-markdown עדיין לא מומש בשתי השפות הנפוצות האלה. ואז הבנתי שההבדל בין כתיבת parser כלשהו בשפות *P למיניהם לבין כתיבת parser כזה ב-C++/C הוא קודם כל דרך החשיבה.

המשך...

המחיר של IO.

ב־יום שלישי, 27 בנובמבר 2007, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏6 תגובות

בעקבות העבודה של על CppCMS החלטתי לבדוק מס' פתרונות שיאפשרו גישה מהירה לנתונים נפוצים, למשל, פרופילים של משתמשים, ניהול sessions ועוד. נתונים שהגישה אליהם מבצעת בד"כ באופן אקראי ולא סדרתי, כמו למשל, 10 הודעות ראשונות בדיון בפורום. לפני עמדו מספר אפשרויות:

  • להשתמש בבסיס נתונים רגיל כמאגר איכסון ולכתוב מערכת caching פנימית המשותפת ל־threads שונים (למשל מבוססת על STL map).
  • להשתמש בפתרונות קיימים -- SQL עם memcached.
  • להשתמש ב־Berkeley DB.

הפתרון הראשון נראה כמעניין ביותר אבל הוא בעייתי ברגע שצטרך לחשוב על scaling -- אז תמיד צריכה להיות אופציית "גיבוי" של SQL+memcache. בנוסף הוא נוטה להפוך ליותר מורכב אם נרצה לשתף את המידע בין תהליכים דרך זכרון משותף, מפני ש־map רגיל לא יעבוד.

הפתרון השלישי דורש שימוש בספרייה חיצונים עם רישיון דמוי GPL, ושוב, ברגע שנדבר על scaling נצטרך לבצע DB Replication וזה גם לא כל־כך פשוט.

אז עשיתי השוואת ביצועים קצרה בין שלושת הפתרונות השונים מבחינת המחיר שלהן.

המשך...

העמוד הבא

העמוד הבא

דפים

נושאים