Anda pada dasarnya memiliki dua pilihan. Anda dapat menyimpan data tepat di baris atau Anda dapat menggunakan fasilitas objek besar. Sejak PostgreSQL sekarang menggunakan sesuatu yang disebut TOAST untuk memindahkan bidang besar dari tabel seharusnya tidak ada penalti kinerja yang terkait dengan penyimpanan data besar di baris secara langsung. Tetap ada batas 1 GB dalam ukuran bidang. Jika ini terlalu terbatas atau jika Anda menginginkan API streaming, Anda dapat menggunakan fasilitas objek besar, yang memberi Anda sesuatu yang lebih seperti deskriptor file dalam database. Anda menyimpan ID LO di kolom Anda dan dapat membaca dan menulis dari ID tersebut.
Saya pribadi akan menyarankan Anda menghindari fasilitas objek besar kecuali Anda benar-benar membutuhkannya. Dengan TOAST, sebagian besar kasus penggunaan tercakup hanya dengan menggunakan database seperti yang Anda harapkan. Dengan objek besar, Anda memberi diri Anda beban pemeliharaan tambahan, karena Anda harus melacak ID LO yang telah Anda gunakan dan pastikan untuk memutuskan tautannya saat tidak digunakan lagi (tetapi tidak sebelumnya) atau mereka akan disimpan di komputer Anda. direktori data mengambil ruang selamanya. Ada juga banyak fasilitas yang memiliki perilaku luar biasa di sekitarnya, detailnya luput dari perhatian saya karena saya tidak pernah menggunakannya.
Bagi kebanyakan orang, hukuman kinerja besar yang terkait dengan penyimpanan data besar dalam database adalah bahwa perangkat lunak ORM Anda akan mengeluarkan data besar pada setiap kueri kecuali Anda secara khusus memerintahkannya untuk tidak melakukannya. Anda harus berhati-hati untuk memberi tahu Hibernate atau apa pun yang Anda gunakan untuk memperlakukan kolom ini sebagai besar dan hanya mengambilnya jika diminta secara khusus.