ラベル データストア の投稿を表示しています。 すべての投稿を表示
ラベル データストア の投稿を表示しています。 すべての投稿を表示
このページの記事一覧
● 2012年11月15日木曜日 - [AppEngine] jdoconfig のパラメータ
● 2012年11月13日火曜日 - [AppEngine] データ更新時の Index の使用量
● 2012年9月2日日曜日 - [AppEngine] データストアの Quota と Index
● 2012年9月1日土曜日 - [AppEngine] Eventual ということ。
● 2012年8月26日日曜日 - [AppEngine] JDO でデータストアを使う
● 2012年8月25日土曜日 - [AppEngine] JDO でデータストアを使う(準備編)

2012年11月15日木曜日

[AppEngine] jdoconfig のパラメータ

AppEngine の Eclipse プラグインでプロジェクトを作成すると、JDO 用の設定ファイルである jdoconfig.xml が作成される。
その中に、

<property name="javax.jdo.option.NontransactionalRead" value="true"/>
<property name="javax.jdo.option.NontransactionalWrite" value="true"/>
<property name="javax.jdo.option.RetainValues" value="false"/>
<property name="datanucleus.appengine.autoCreateDatastoreTxns" 
             value="true"/>

というパラメータがある。 JDO のドキュメント によると意味は以下の通り。

パラメータ意味
NontransactionalReadWhether to allow nontransactional reads
NontransactionalWriteWhether to allow nontransactional writes
RetainValuesWhether to suppress the clearing of values from persistent instances on transaction completion

autoCreateDatastoreTxns は JDO で規定されているパラメータではなく App Engine 固有の設定なので、 App Engine のトランザクションの説明 に記載されている。
false にすると JDO 的にトランザクションを有効にしても データストアのトランザクションは起動しないらしい。

実際に試してみよう。

2012年11月13日火曜日

[AppEngine] データ更新時の Index の使用量

この間、JDO でデータを挿入・削除した場合、それぞれ
キー以外の属性数×2 + 1」回のインデックス書き込みが発生した。

念のため、JDO で属性を一つだけ更新した場合のインデックス書き込みの回数を見てみよう。
予想としては、1属性で2つのインデックスがあるから2回発生するはず。

まずデータひとつ作成
MyData data = new MyData();
data.setName("one");
data.setName2("two");
data.setNo(10L);
pm.makePersistent(data);

ResourceDaily Quota
Datastore Entity Put Ops 0 → 1
Datastore Index Write Ops 0 → 7

キー以外の属性は3つなので想定通り 7 Index Write Ops。

2012年9月2日日曜日

[AppEngine] データストアの Quota と Index

前回、調子に乗ってデータストアのテストをしていたらあっという間に、無料分の Quota の制限に達してしまった。 AppEngine 管理コンソールで詳しく見てみる。

「Quota Details」 画面で見てみると、引っかかったのは「Datastore Write Operations」 の 「0.05 Million Ops / 24 hour」。

2012年9月1日土曜日

[AppEngine] Eventual ということ。

前回の記事で、データの追加、削除、更新、取得をやってみた。
一応動くのだが、たまに表示される結果にデータの変更内容が反映されていないことがある。

Google App Engine のデータストアの形式には以前は、「Master/Slave」形式と「High Replication」形式があったのだが、「Master/Slave」形式は廃止されて、現在はアプリケーションを作成する際には「High Replication」しか選択できないようになっている。
「High Replication」ではデータの取得が eventual である、すなわり取得したデータが最新ではない可能性があるとのこと。どうやらそのせいのようだ。

2012年8月26日日曜日

[AppEngine] JDO でデータストアを使う

前回、PersistenceManagerFactory と データクラス が準備できたので、 作成・削除・更新操作・取得をやってみる。
各操作は、PersistenceManagerFactory から取得した PersistenceManagerに対して実行する。
  • 取得
    キー値で取得する際には、PersistenceManager#getObjectById が使える。
    それ以外に検索条件などで取得する際には、Query オブジェクトを使用する。
    Query query = pm.newQuery(MyData.class);
    @SuppressWarnings("unchecked") 
    List result = (List)query.execute();
    
  • 作成
    データオブジェクトを作成してプロパティをセットした後、 PersistenceManager#makePersistent を実行する。
    MyData data = new MyData();
    data.setName(req.getParameter("name"));
    pm.makePersistent(data);
    

2012年8月25日土曜日

[AppEngine] JDO でデータストアを使う(準備編)

アプリがデプロイして動くようになったので データストアを使ってみる。
App Engine のデータストアを使用するには、 JDO(Java Data Objects)、 JPA(Java Persistence API)、 および、App Engine 独自の Low Level API を使用する方法がある。

Google App Engine の スタートガイドでは JDO を使っている のでまずは JDO を使ってやってみる。