2014-10-27 85 views
0

我正在寫一個Ruby gem,需要對下一個未知數據庫進行非常簡單的查詢:sqlite,mysql,postgresql。Ruby抽象數據庫連接器

現在我使用的ActiveRecord來處理這種特質,但因爲我沒有使用的ActiveRecord功率的99%,看起來像一個有點勢不可擋我。

我需要的東西玩,在未來的方式:

connection = AbstractConnection.new("adapter", "database" {, "username", "userpass"}) 
connection.query("select * from table") 

有抽象我產生不同的適配器連接的任何寶石?是否使用ActiveRecord這裏有個好主意嗎?

+0

由於數據庫可以是任何種類的「select * from table」在所有數據庫中都是無效的。那麼它在sqlite,mysql和postgresql中有效,但在其他語言中不適用。它覺得你想爲連接抽象,但不想查詢。對我來說這似乎很奇怪,因爲查詢可能會因數據庫而異很多......我不知道抽象連接沒有抽象查詢是否是個好主意 – 2014-10-27 14:14:36

+0

你是對的@AurélienBottazini讓我們縮小_any_到3個適配器在描述中。 – fguillen 2014-10-27 14:40:27

回答

1

如果你不希望使用ActiveRecord的,你可以使用:

  1. Sqlite3 gem
  2. MongoDB driver
  3. Pg gem
  4. MySQL driver for Ruby

ActiveRecord的跨越提供了好得多的DSL數據庫,但如果你不需要所有的開銷t如果你想投入一些時間來獲得上面的一個。

但是,如果您認爲將來可能要更改數據庫類型,那麼我建議您使用ActiveRecord:您的代碼將保持不變,底層框架將處理更改的數據庫類型。

希望這會有所幫助!