我經歷了這個話題,發現這個鏈接相當有用和簡單的同時。 Storing matrices in a relational database 但是你可以請讓我知道,如果方式矩陣和數據庫
A B C D
E F G H
I J K L
[A B C D E F G H I J K L]
提到的是最好的,在數據庫中存儲矩陣元素的簡單甚至是可靠的方法。此外,我需要乘以兩個矩陣,並使操作動態。那麼數據的存儲會給這個任務帶來什麼問題?
我經歷了這個話題,發現這個鏈接相當有用和簡單的同時。 Storing matrices in a relational database 但是你可以請讓我知道,如果方式矩陣和數據庫
A B C D
E F G H
I J K L
[A B C D E F G H I J K L]
提到的是最好的,在數據庫中存儲矩陣元素的簡單甚至是可靠的方法。此外,我需要乘以兩個矩陣,並使操作動態。那麼數據的存儲會給這個任務帶來什麼問題?
是將矩陣元素存儲在數據庫中的最佳,簡單或可靠的方式。此外,我需要乘以兩個矩陣,並使操作動態。那麼數據的存儲會給這個任務帶來什麼問題?
我會開始說這兩種方法都是有效的,但第二種方法是不夠的,因爲你寫的。你必須有一些其他的信息,比如每行元素的行長或者(行,列)索引來存儲矩陣作爲一維數組。這通常用於稀疏矩陣,其中在對角線的任一側上存在大量圍繞值的零點。
在數據庫中堅持矩陣並在內存中對其進行操作是兩件不同的事情。
像乘法這樣的任務需要(行,列)索引。將矩陣存儲爲二維數組意味着您將擁有它們,因此不需要其他信息。一維數組也需要這些信息,所以你必須提供它。
優勢擺動到稀疏矩陣的一維數組。在這種情況下,您不必在帶寬之外存儲零值,但是像加法和乘法這樣的操作對於編碼來說變得更加複雜。
我認爲這很大程度上取決於你想如何在你的應用程序中使用矩陣。
數據庫僅用於同一應用程序的持久性,速度很重要,並且事先無法知道大小?製作你自己的序列化方案,並保存二進制blob。
是否在應用程序之間共享數據庫,但事先不知道大小?使用逗號分隔列表。
您是否關心數據完整性,類型安全性以及想要查詢單個單元格?然後使用(row,col,單元格值)架構。
你知道你的矩陣是固定的大小和相對較小的,例如4X4變換矩陣,並且與數據庫中的任何元素都有1對1的關係嗎?那麼你實際上可以在你的桌子上放16行,排成一行。
想想你的使用案例和實驗!
在postgresql中,您實際上可以擁有多維數組,定義您自己的類型並在這些類型上定義您自己的函數。例如,一個可以簡單地這樣做:
CREATE TABLE tictactoe (
squares integer[3][3]
);
關於如何創建自己的類型信息,請參閱The PostgreSQL manual。