2010-12-16 30 views
0

背景如何提供對數據庫子集的公共訪問?

我的研究,我正在開發一個database來存儲我們的數據,我們正在建立一個software tool,簡化了訪問這些數據。該數據庫將保存已發佈的數據,以及我們希望提供的數據,以及尚未發佈且屬於其他研究人員的數據。

目的

我們想爲我們的工作是容易複製,並且到這個程度,我們需要讓公衆在其上運行的數據SELECT語句。三種可能的解決方案包括:

  1. 每個發佈(可能在虛擬機中,這樣的軟件工具的相關性得以滿足)創建一個可以自由下載的數據庫的一個子集
  2. 每個發佈,創建一個將數據記錄鏈接到發佈的多對多查找表,然後提供公開的SELECT訪問這些記錄的權限。我們可以很容易地複製數據庫供公衆使用 參數模塊 自動化前一代

然而,我被告知,甚至允許通配符陳述損害的安全性,這也是爲什麼我認爲選擇1更爲合理。選項1還可以使我們對數據庫進行歸檔,因爲它與特定的出版物一起使用。

更新:澄清,我希望用戶能夠重現整個計算流程,這就需要使用SELECT語句可以加入與auxillary數據數據表(如協,實驗細節)在查找表中。

問題

什麼是提供給數據庫的一個子集公共接入的最佳方式是什麼?

回答

1

你可以分配數據的子集作爲SQLite數據庫,即創建一個獨立的數據文件,人們可以下載到自己的計算機。許多學者,經濟學家等都使用SQLite來共享數據集,因爲它是獨立的,並且安裝非常簡單(我應該添加,跨平臺的)。

+0

聽起來像一個不錯的解決方案;你能舉一個例子說明如何將一個MySQL數據庫的一個子集作爲一個SQLite數據庫來重現嗎? – 2010-12-16 22:49:13

+0

笨拙而又久經考驗:爲要導出的表子集創建視圖;以CSV格式導出視圖;將導出的CSV文件導入SQLite。 – Tim 2010-12-16 23:28:00

+1

@David:編寫一個小程序(Python是一種很好的語言),將記錄從現有的MySQL安裝中提取出來,然後將它們重新插入到SQLite容器中,然後每次需要時運行該小程序導出新的數據集。 – 2010-12-17 01:48:41

0

創建具有適當訪問權限的視圖,以及只能訪問這些視圖但不包含基礎表的用戶。

+0

@Mchi我希望用戶能夠使用我所做的相同軟件複製整個分析。 – 2010-12-16 20:59:36

+0

好的...所以具有不同於實際表格的名稱視圖將不允許這樣做。所以我想選項1是最好的。 – Mchl 2010-12-16 21:08:57

+1

用於內部或私有應用程序的數據庫服務器理想情況下不應由Internet上的主機節點訪問。如果它們可以訪問,則只應在加密連接和強認證需要時才能訪問。否則,它是一個大的攻擊媒介:如果數據庫軟件有緩衝區溢出或(lol)堆棧溢出錯誤會給遠程攻擊者執行任意代碼 - 或者更糟?此外,最好讓私人和公衆的資料放在不同的系統上,以便監控資源和帶寬使用並保持隔離。 – 2010-12-17 01:52:03