val mockedFile = mockk<File>()
every { mockedFile.write(any()) } returns U...
2022/11/25
Kotlin mocking a var with get/set using Mockk
coEvery { someClass getProperty "now"} returns ...
2022/11/22
select force index,use index,ignore index
select * from table use index(index1,index2)select * from table ignore index(index1)select * from table force index(inde...
sql join on using
select * from join1 inner join join2 on join1.join1_id = join2.join1_id;select * from join1 inner join join2 using(join1_id);usingで同じ名の列は一つになり、列減少する基本、usingの方が便利と...
big query 配列 uunest
キー以外の内容はkey-valueの配列かなRDBと違う配列の中身を取るに UNNEST関数を使うNESTは階層で、UNNESTは階層をなくす、平準化にする例えば。epは配列でselect 他のカラム、ep.key, ep.value.string_valuefrom xxxx, UNNEST(配列のカラム) ep以上は検索できるが、問題は、配列中の値の複数を条件として検索できないep.a=a AND ep.b=b で取れないで、それで別々に検索して、JIONなどのSQL技で解決。複雑なSQLになる。SELECT GENERATE_ARRAU(11,33,2) AS somestart,end,step(default 1)+--------------------------------------------------+| some |+--------------------------------------------------+|...
cloud spanners shard
- record->split->node - どこに保存されるはprimary keyで決める- autoIncrementの仕組みがない、順番に保存するのは特定のnodeに集中するので、望ましくない(hotspot発生)- autoIncrement以外のIDの生成方法uuid 1~uuid4 - uuid1はtimestampペース、mac addressを使う連番になる可能性- uuid4はランダムの乱数で、分散性が高い、衝突になる可能性が0ではないsnowflakeULIDtimestampを使ってIDを生成する場合、どうしても分散率が低い。なので、shardId=hash(key)%NPRIMARY KEY(shardId,分散率低い値のcolumn)の複合キーで対応する内部のHash関数を使う。 - farm_fingerprint -...