在Java数据流的处理中,有没有办法改善访问数据存储的性能?

时间:2019-06-09 23:43:28

标签: google-cloud-datastore google-cloud-dataflow

我在数据流中使用Beam-SDK 2.9版。 然后,在数据流中调用服务。 数据流和数据存储(数据存储模式的Firestore)区域位于东京。

我尝试访问服务中的数据存储。 用Pk获取数据非常慢。执行该过程时没有数据。

获取时间:60ms 放置时间:12ms 提交时间:77ms

我尝试使用单例对象访问数据存储。没什么改变。

1) datastore access code
Datastore datastore = DatastoreOptions.getDefaultInstance().getService();

public Map<String, Object> get(List pklist, Object lifetime) {
        String key = pklist.toString();
        Key pk = keyFactory.newKey(key);

        Entity entity = ThreadLocalTransaction.getThreadInstance().getTxn().get(pk);
        if (entity != null) {
            KryoSerializer ser = new KryoSerializer(HashMap.class);
            Map<String, Object> valueMap = ser.deserialize(entity.getBlob(VALUE).toByteArray());

            String lifetimeValue = entity.getString(LIFETIME);

            if (ObjectUtils.equals(ObjectUtils.toString(lifetime), lifetimeValue)) {
                return valueMap;
            }
        }

        return null;

}

 public void put(List pklist, Object lifetime, Map<String, Object> value) {

        String key = pklist.toString();
        Key pk = keyFactory.newKey(key);

        KryoSerializer ser = new KryoSerializer(HashMap.class);

        byte[] bytes = ser.serialize(value);

        Entity entity = Entity.newBuilder(pk) 
                .set(VALUE,
                        BlobValue.newBuilder(Blob.copyFrom(bytes)).setExcludeFromIndexes(true).build())
                .set(LIFETIME, StringValue.of(ObjectUtils.toString(lifetime)))
                .set(TIMESTAMP, Timestamp.now())
                .build();
        ThreadLocalTransaction.getThreadInstance().getTxn().put(entity);

    }
2) the main code
ThreadLocalTransaction.getThreadInstance().setTxn(datastore.newTransaction());
get();
put();
ThreadLocalTransaction.getThreadInstance().getTxn().commit();

3) pom
<dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-datastore</artifactId>
            <version>1.56.0</version>
</dependency>

0 个答案:

没有答案