我有一個每日運行的服務,其目的是從Postgres DB導出增量並將其上傳到S3存儲桶。Postgres的Java OutputStream直接導出到S3上傳的InputStream
我使用的是CopyManager
和copyOut
方法。 在copyOut
我有2種選擇: 一個)作家 b)中的OutputStream
在另一方面我有具有這種PutObjectRequest
接受File
或InputStream
亞馬遜S3客戶端。
目前,我們有2種方式這樣做的:1。 導出到文件並從文件 2.出口上傳到ByteArrayOutputStream
並得到他們根本byte[]
和它傳遞給S3上傳的InputStream的
是否有可能以某種方式連接那些我們不必使用這個中間文件或者可能非常大的字節數組?
換句話說,我想直接上傳分貝增量
當前的解決方案不錯? 文件可能很大 - 我們不希望將大磁盤連接到我們的VM。 字節數組可能很大 - 我們不需要VM上的大量內存。 我目前正在使用自定義OutputStream來緩存轉儲的數據,並使用分段上傳將數據上傳到S3。 – bodziec
你沒有提到三角洲的大小。你應該看看管道,然後 –
我剛纔看到CopyOut對象允許我一行一行地取出導出的數據。然後我可以將它們緩存在配置的MB批處理中,並作爲分段上傳進行推送。 – bodziec