2010-01-08 173 views
6

我希望看到一些簡單的平面文件數據庫以及它們如何通過數據層訪問的示例。我之前寫過一個平面文件並且從平面文件讀取數據,但我從未創建過使用文本文件訪問應用程序數據的數據層。平面文件數據庫示例

如果可能的話,最好能看到有一個數據層的教程使用了一個簡單的自定義平面文件數據庫。一個將自定義業務對象保存爲XML然後上傳的例子會很好,因爲XML非常流行且易於使用。

我也將是討論設計的平面文件數據庫設計的最佳實踐任何網站鏈接感激,等

我的目標是有用於存儲用戶的計算機上的簡單數據的解決方案,讓他們不需要安裝任何特殊的軟件(如SQL Server等),以便從其存儲位置獲取數據。

我知道這是一個非常普遍的問題,但任何可以指引我朝着正確方向的建議都是值得歡迎的。

+0

您使用的是什麼平臺/編程語言? – AUSteve 2010-01-08 23:41:09

+0

我正在使用c#.net – 2010-01-10 19:03:48

+0

在PHP中,我爲**平面文件數據庫構建了一個https://github.com/tmarois/Filebase**有許多功能,大多數軟件包都沒有。我目前正在維護它,並有能力改變你的格式,所以JSON/XML/YAML等(只是意識到老問題,但我會提供這個,如果它的使用給其他人尋找相同的東西,我打算上來以及我如何使用平面文件數據庫的一些真實生活實例) – timothymarois 2017-09-06 13:42:42

回答

4

由於今天大量的類似技術,您可能已經將自己的定義混淆了一些,可以理解。

XML不是flat file format(或平面文件數據庫),但通過閱讀您的目標,聽起來像您真正想要的是一個自包含的關係數據庫而不是實際的平面文件。

和其他人一樣,我可以強烈推薦SQLite用於此目的。有各種平臺的綁定,.NET有System.Data.SQLite,它在一個文件中既是數據庫提供者又是引擎。

使用SQLite的兩大好處是,實際的數據庫完全自包含在由您的應用程序控制的單個文件中,並且它支持標準的SQL DDL和DML命令(即SELECT,INSERT,UPDATE,DELETE,CREATE數據庫/表等)。

對於單用戶應用程序SQLite是存儲應用程序數據和設置的優秀方法之一。最近還有has been discsussion它甚至可以支持更小規模的多用戶應用程序。

但是,如果您有權訪問/使用數據庫服務器,Oracle,MySQL,SQL Server等仍然是多用戶應用程序(即使是小規模應用程序)的首選。

另外,不要忘記,數據庫的選擇不是相互排斥的。

您可能擁有多用戶應用程序,並且在多用戶計算機上安裝了豐富的客戶端UI。這裏的中央數據庫應該是一個多用戶數據庫,比如MySQL。但是在富客戶端UI中,SQLIte是存儲每個用戶設置的理想選擇,或者可能在無法訪問數據庫時提供脫機支持。

0

CSV,INI,XML這樣的文本格式可以用來存儲結構化數據,但是IMO不靈活或者不能有效地用作數據庫。

我推薦SQLite作爲一個很好的選擇。這是一個非常強大,輕量級和獨立的數據庫引擎。

0

你可以有你的蛋糕,吃它太:

SQLite是由一個單一的文件,無需安裝SQL數據庫,它有許多語言綁定,並在不同的平臺上運行。

如果您提到要在平面文件上編寫自己的數據層,則無需這樣做。事實上,除非你想學習鍛鍊,否則我會建議不要這樣做。

0

有幾個嵌入式數據庫可用,您的用戶將不必擔心。

SQLLite是常見的,流行的,跨平臺等,取決於你的實現語言。如果您使用Java,則有幾個Derby例如。 .NET不是我的笨蛋,但我想象那裏有東西。 MS至少有一個可以自由使用的桌面,可以使用的嵌入式SQL引擎。

編寫自己的腳本可能是一個有趣的練習,但該腳輪已經完成,使用現有數據庫比從頭開始更簡單,更高效。您的用戶完全不會受到影響,所以如果這是主要的驅動因素,那麼沒有理由不使用可用的產品/項目。

+0

有.NET和Java的SQLite綁定 – 2010-01-08 23:46:17

0

Perl中有DBD::CSV模塊,它可以加載csv文件並用SQL語句查詢它們。但爲了您的目標,我認爲您最好調查SQLite,這是一個在沒有服務器的情況下運行的合適的關係數據庫。

0

爲什麼不用簡單的數據庫引擎捆綁應用程序,而不是重新創建數據庫?數據庫有很多大小,並不都是巨大的:-)

如果你想重新發明輪子,看看簡單的開源數據庫引擎的源代碼應該指向你正確的方向。

0

我同意許多意見,建議使用現有的數據庫引擎更好。然而,試圖回答這個問題:

  • 極其常見的平面文件數據庫格式是Xbase(通常帶有.dbf擴展名的文件)。你可以谷歌的「xbase」和「dbf」,並找到大量的信息和任何數量的驅動程序。如果你真的感興趣,你應該能夠提取相當多的提示和技巧。
  • 如果你想玩一個很有可能在你的系統上的遊戲,你可以使用ODBC「Microsoft Text Driver」。如果您的計算機上有任何Microsoft數據訪問內容,則可能有該驅動程序。我不確定,但可能安裝了MDAC。該驅動程序將讀取和寫入逗號分隔的文本文件(以及其他格式)。
1

biggy是我過去使用過的一種。它在平面文件中保存爲JSON,您可以在Github上找到它。