2015-09-07 110 views
0

在MySQL中維護數據庫視圖有時很麻煩。當你改變一張引用的表格時,你必須改變這張表格,並且在遷移過程中沒有乾淨的方法(DB::unprepared())。我想在模型中使用query scopes更可維護。不是嗎?它是否對性能有負面影響?我應該避免在Laravel項目中使用數據庫視圖嗎?

+0

這裏有很多事情要考慮,所以我不認爲有任何真正的建議可以包含任何未來的項目。查詢範圍在Laravel應用程序的上下文中可能更易於維護,但它們與視圖不完全相同,這使得這種奇怪的比較成爲可能。在某些情況下,視圖可以具有更好的性能,但這取決於您使用的數據庫系統。所以底線是你應該使用最適合該特定項目的任何工作。在性能至關重要的情況下,完美的可維護性可能會帶來一些衝擊。 – Bogdan

+0

我同意Bogdan關於查詢範圍。他們是完全不同的東西...... –

回答

1

我不知道你的項目有多大,我沒有很多元素來完美地判斷這種情況。

但是,使用視圖意味着取決於底層數據庫系統。顯然它有其優點和缺點,但我更願意分離我的軟件組件。

如果你改變,在未來,從MySQL的切換到MongoDB的

也許,您可以使用緩存系統,如Redis或Memcached(並且Laravel 已經有一個現成的服務)。

正如我之前告訴過你的,我基本上是在提出這個建議,因爲我考慮了軟件可伸縮性和組件解耦。此外http://laravel.com/docs/5.1/cache

,如果你有一些信心與設計模式,你可以使用一些堆放倉庫旁邊的裝飾模式實現一個真正優雅的解決方案:

在這裏你可以瞭解的基本使用緩存服務。

您可以找到有關的話題在這裏的一些有趣的文章:

是的,他們是約Laravel 4,但這個概念可以很容易地在Laravel通過5. *項目。

希望它有用!

編輯:正如我在以下評論中所說的,如果你不想從Redis或Memcached之類的東西開始,你總是可以使用基於文件系統的緩存。

+0

我同意了。但是,扮演魔鬼的擁護者 - 多久換一次數據庫系統?有時候,最好使用可用的工具,以便您可以編寫您現在需要的apis,而不是考慮未來可能不會發生的更改。 – Amo

+0

我部分同意你的看法。你說的是對的,但在我的生活中,我看到很多情況下花費幾個小時可以大大改變一切。另外,如果你喜歡Cache服務的想法,你總是可以使用基於**的文件系統**。它可以是一個很好的入門者,它不需要配置! :) –

相關問題