使用 Spanner R2DBC 和 Spring Data

问题描述

是否有可能将只读事务与 Spring Data R2DBC 一起使用,尤其是与 Google Spanner DB Backend 一起使用? Spanner R2DBC 驱动程序支持 RO 事务,并提供很多可扩展性优势(无锁定!)。但是,它不是 R2DBC 标准,我在 Spring Data R2DBC 文档中没有找到任何支持

解决方法

根据我的研究,这似乎是不可能的。

我在此处提交了一项功能请求,要求支持 Spring Data R2DBC 中的扩展功能:https://github.com/GoogleCloudPlatform/cloud-spanner-r2dbc/issues/314

目标是允许您使用事务注释进行只读事务,例如:

// assume that two arrays have the same
// length,or 'booArr' is less than 'arr'
Object[] arr = new Object[]{1,2.0,-1,3};
Boolean[] booArr = {true,true,false,true};

Object[] validArr = IntStream
        // iterate through array indexes
        .range(0,booArr.length)
        // filter trues
        .filter(i -> booArr[i])
        // take values that are true
        .mapToObj(i -> arr[i])
        // return an array
        .toArray();

// output
System.out.println(Arrays.toString(validArr));
// [1,3]