您在這裡

Siren 1.0 RC3

hswong3i's 的頭像
hswong3i 在 2008-01-31 (四) 18:00 發表

多天下來不停地更新 Siren,正好趕上了 Drupal 6.0 RC3 的釋出。

Siren 1.0 RC3 更新了多個重要的部份,包括:去除了 CLOB 的支援,改為直接使用 BLOB;新增了 pdo_oci 的實驗性支援;更新 pdo_mysql 的內部處理,改以 locater 方式工作;同步更新及改進了所有 Siren 的資料庫驅動代碼等等。

Siren 已經足夠穩定,可作公開測試。現在 Siren 已經支援7種 PHP 資料庫訪問方式:mysql,mysqli,pgsql,oci8,pdo_mysql,pdo_pgsql 和 pdo_oci。接下來的主要目標將會在於 IBM DB2 及 SQLite 的研究。

在此補上英文原版。如有興趣於 Drupal 的多元資料庫支援及研究,歡迎多多指教 :-)

Following on the thrid release candidate of Drupal 6.0, I am proud to present to you the Siren 1.0 RC3. There is a lot of changes since Siren 1.0 RC2, including the REMOVE of CLOB abstraction (replaced with BLOB), complete revamp some driver implementation (including oci8, pdo_mysql and pdo_pgsql), add pdo_oci driver with limited supporting, and an indeed cross diff for coding style synchronize among different database driver implementation. I am confident that the code is stable enough for wider testing by the community.

NOTE: Upgrade from RC2 is not supported, since CLOB abstraction is now replaced as BLOB. It is strongly suggest to test Siren 1.0 RC3 with a flash new installation. If you are considering about a upgrade/migration from Drupal to Siren, you may first upgrade to latest Drupal release, and handle the migration from Drupal to Siren manually. Siren is not suggest to use for production, please use it with your own risk ;-)

NOTE: pdo_oci is still not suitable for production, based on an ORA-01461 bug. According to this bug, Drupal installation procedures are not able to complete, and you may face error message in admin/build/modules. This should based on PHP pdo_oci implementation, but not Siren's duty. BTW, you may first install Siren 1.0 RC3 with oci8 driver, then swap to pdo_oci for testing and debug. They are assumed as interchangeable.

Download

Benchmarking result

The following benchmarking is about performance different between official drupal-6.0-rc3 and siren-1.0-rc3. According to this report, we can found that they have no performance difference:

Fig. 1.1 Siren ab benchmarking, about requests per second.

Fig. 1.2 Siren ab benchmarking, about total connection time (ms).

Benchmarking setup

The benchmarking is running on top of a Linux KVM client. Software packages are upgraded to latest stable, and install with tarball from sketch.

Host hardware configuration:
- CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4200+
- RAM: 4GB
- HD: WDC WD3200YS-01PGB0

Linux KVM client hardware configuration:
- CPU: Single Core
- RAM: 1024MB
- HD: 32GB

Benchmarking software configuration:
- OS: Debian etch 4.0 (i686)
- Apache: 2.2.8 (tarball, build from sketch)
- PHP: 5.2.5 (tarball, build from sketch)
- MySQL: 5.0.32 (etch deb)
- PostgreSQL: 8.1.11 (etch deb)
- Oracle: 11.1.0.6.0 (tarball, binary)

Drupal setup (follow instruction of http://drupal.org/node/79237):
- All core modules (except forum, search and syslog)
- 2,000 users
- 5,000 nodes
- (I skip path aliases)
- 10,000 comments
- 250 terms
- 15 vocabularies

Known issue

  • If you are using oci8 backend, don't active and use search.module and forum.module. As their queries are too complicated, they are not compatible with Oracle. They should be split into numbers of small and simple handling; BTW, I will left it as the duty for D7, and backport its handling if possibile.
  • pdo_oci is not stable enough, and will cause error during installation procedures. As Siren's pdo_oci driver is designed as interchangeable with that of oci8, you can first install Siren 1.0 RC3 with oci8, and further more swap into pdo_oci by editing settings.php manually. BTW, error message will still prompt when accessing admin/build/modules. This should belongs to the design of PHP pdo_oci, but not the duty of Siren's. I will report this bug to PHP. If you are able to give a hand in this issue, please feel free to contact me ;-)
  • pdo_mysql is now revamp, and replace the use of ? placeholder with locater style. This is because no spotlight performance boost up with this handling, but isolate pdo_mysql implementation from oci8, pdo_pgsql and pdo_oci. According to benchmarking result, the reuse of _db_query_callback() will not introduce critical performance impact.
  • Most drivers are updated with better coding style and logical checking. On the other hand, I try to sync ALL 7 drivers into similar style. You may seems this as a total revamp, and focus on the testing once again ;-)
  • Update and upgrade handling for 4.x -> 4.7.x -> 5.x are now removed. This means that you should test Siren with flash new installation. Don't upgrade from existing Drupal 5.x.
  • Don't try to upgrade from previous Siren release, I will not offer any official supporting with it (this portal site is even revamp with Siren RC2 release). Official upgrade will start support since Siren 1.0 (Drupal 6.0) stable release.

What next for Siren?

Well, since Drupal 6.0 is now closer, I am not going to introduce any else spotlight enhancement to Drupal 6.0, but keep silent and waiting for Drupal 7.x. The development of SQLite and DB2 will still keep in progress; BTW, they should not able to ship together with Siren 1.0 stable release ;-p