2014-12-08 37 views
2

只是想知道JSON類型是否也屬於事務。對於例如如果我已經開始了一個插入列JSON類型和其他數據的事務,並且如果發生錯誤,它是否也會回滾json的東西?在PostgreSQL部分事務中是JSON類型嗎?

+4

當然是的。你爲什麼認爲它不會? – 2014-12-08 08:04:31

+1

由於在NoSql DB中不支持像MongoDB事務,所以我們將首次使用postgreSql。如果上述事情是真的,我無法找到確切的地方,所以我問。無論如何謝謝你的確認。 – user3170450 2014-12-08 08:07:46

+2

Postgres不是一個「NoSQL」數據庫,它是一個符合ACID標準的SQL數據庫,它恰好支持一些NoSQL數據類型,這些數據類型違反了_relational_概念,但不支持ACID原則。 – 2014-12-08 08:13:44

回答

7

全部在PostgreSQL中是事務性的和崩潰安全的,除非明確記錄爲非。

PostgreSQL的事務操作元組,而不是單個字段。數據類型是不相關的。在PostgreSQL中實現事務性的數據類型不是而是。 (SERIAL「數據類型」僅僅是integer類型的包裝,DEFAULT,有點特殊情況)。

只有少數事情對交易具有特殊的行爲 - 序列,諮詢鎖等 - 並且它們都很清楚地記錄在案例中。

請注意,這會帶來一些限制,您可能不會馬上期待。最重要的是,because PostgreSQL relies on MVCC for concurrency control它必須複製該值被修改時的值(或者,有時,當修改相同元組中的其他值時)。它不能就地更換字段。所以如果你在一個字段中有一個5MB的json文檔,並且你改變了一個整數值,,那麼整個json文檔都必須被複制並寫入修改後的值。 PostgreSQL隨後會出現,並將舊副本標記爲可以重新使用的可用空間。

相關問題