4D-jp 4D Japan Technical Support Team

Begin SQL/End SQLがスレッドセーフに


現在ベータ公開中の17r4では,Begin SQL/End SQLがプリエンプティブモードをサポートするようになりました。

4DのSQLサーバーは,v11からスレッドセーフ(マルチコア対応)であり,以前から個別のリクエストをCPUコアに分散して処理できる設計でした。今回,コマンドがアップデートされたのは,最小限の書き換えでBegin SQL/End SQLが記述された既存コードをプリエンプティブモードで実行できるようにするためです。SQL言語の使用を促進するためではありません。

カレントレコードやカレントセレクションを変更せずにテーブルをルックアップする目的でSQLを使用しているデベロッパーは少なくありません。今回のアップデートにより,メソッドをスレッドセーフにするため,そのような処理をORDAに書き換える必要がなくなりました。

データベースにアクセスするため,必要であれば,SQL言語を使用することができます。しかし,4Dが力を注いでいるのは,ORDAのほうであり,SQLは互換性のためにサポートされている,ということに留意してください。たとえば,SQLのネストはサポートされていないため,トリガにSQLが記述されたテーブルにSQLでアクセスすると,エラーが返されます。この制限が取り払われる予定はありません。トリガで,カレントレコードやカレントセレクションを変更せずにテーブルをルックアップしたいのであれば,SQLではなく,是非,ORDAを使用してください。


リンク