2017-05-09 20 views
5

Bir kısmının JSON olarak dökülmesini istediğim oldukça yapılandırılmamış ve değişen verilere sahip olduğu bir uygulama yapıyorum. Birincil DB olarak PostgreSQL kullanıyorum. JSON alan türünü hiç kullanmadım, ama daha önce MongoDB kullandım. Fantazi bir şeye ihtiyacım yok, zamanın% 99'unu depolamak ve veri almak ve JSON'un bazı alanlarına göre sorgulamak ve PostgreSQL'in bir örneğinin başarabileceği bir destan, destansı yok.PostgreSQL JSON alan türü vs MongoDB

Soruma göre, PostgreSQL JSON alanı MongoDB kullanılarak karşılaştırılabilir mi? Bunun için PosgresSQL'i seçmeden önce yapmam gereken sınırlar veya engeller var mı? Bonus soru: MongoDB Stüdyo 3T uygulamasını kullanırken görmek ve benim gibi elle o JSON alanını düzenlemek için kolay bir yol var mı (ben PostgreSQL DB uygulamalar nedense büyük olmadıklarını biliyorum ..)

cevap

1

? Json verileriniz için Postgres'i kullanmakta hiç sorun yaşamayacaksınız. Postgres'deki json ve dizi işlevlerine alışmak biraz zaman alır, ancak harikadır ve ihtiyaçlarınızın çoğunu karşılar. Postgres'te Json desteği olgun ve harika.

Yine de, json alanlarında veri depolamadan önce çok düşünmeye çalışın. Bu kolay bir yoldur, ancak verileriniz aslında ilişkisel ise, geri dönüp sizi ısırır. İyi eski normal formlar bugün bile geçerlidir.

Birkaç projede MongoDB kullandım ve bir daha kullanacağımdan şüpheliyim. Bence gerçek dünya kullanım durumlarının çoğu aslında ilişkiseldir. Postgres, json için büyük destekle ilişkisel ve belgeler arasında mükemmel bir dengeyi (benim görüşüme göre) vurdu.

Yalnızca json verilerini "blob" olarak kaydetmek istiyorsanız, json veri türünü kullanabilirsiniz. Ancak, nesneleri değiştirmeniz veya bunlardan değerleri almanız gerektiğini biliyorsanız, jsonb'u kullanmalısınız. Jsonb, json verilerinizin geçerliliğini de kontrol edecektir. Ayrıca jsonb'un endekslenmesi daha verimli olduğunu düşünüyorum.

json veri türünü veya json dizisini Postgres işlevlerinde giriş parametresi olarak kullanmak fantastik imo'dur. Veriler bir ilişkisel olarak saklanmaya ihtiyaç duyduğunda, sık sık daha küçük barışlara bölünmesi gereken API sunucumdan json alırım. Bu Postgres içinde kolayca yapılır. Bunu bazen başka yollarla da kullanırım, yani Postgres işlevi ilişkisel verileri birleştirir ve çıktı için REST dostu json nesnelerine güzelce paketler. Bu şekilde, verileri normalize edilmiş bir veritabanında sakladığım gerçeği gizleyebilirim.