2011-08-28 218 views
-2

我曾與MySQL數據庫,但因爲我使用Rails工作,我明白,我必須使用SQLite。現在,我有兩個問題:遷移從MySQL到SQLite的

1 - 現在我的MySQL在我的電腦,如果我安裝的SQLite,將任何問題發生?比如他們之間有沒有衝突?

2 - 什麼區別,他們有語法?

+3

「但是因爲我使用Rails,我明白我必須使用SQLite」errr,你可以在Rails中使用MySQL。沒有問題會發生,SQLite只是一個動態鏈接庫,Ruby有它的寶石。 – 2011-08-28 11:18:56

+0

在我正在閱讀的書中,作者表示在Ruby中,SQLite比MySQL好得多。 –

+0

這是不對的。它可能適用於小型應用程序,但不適用於大型應用程序。 – Femaref

回答

2

this問題..

SQLite是主要用於開發目的僅僅是因爲它是很簡單的建立一個沒有太多挫折的數據庫,然而它在併發性方面(對於web應用來說很有可能)的效率肯定比一些效率低像MySQL這樣的東西。所以不管你是否在開發中使用SQLLite,在生產中使用MySQL(或者其他類似的東西)都是非常明智的。

爲了完整起見,SQLite的也用於「在一個包」的軟件(如移動開發),在其中您可以輕鬆地捆綁SQLite的文件與應用程序。

如前所述上SQLite Website

SQLite是不打算成爲 企業數據庫引擎。它不是 旨在與Oracle競爭或 PostgreSQL。

另一種方式來看待SQLite是這樣的: SQLite的目的不是要取代 甲骨文。它旨在取代 fopen()。

就Ruby的好處而言,實際上沒有太大的好處,因爲庫/ ORM(即Active Record)真正地抽象了兩個系統之間的差異,在單個包裝中創建一致的訪問層。

入住這question from stackoverflow 並檢查該Google.com :)

閱讀本

時,應使用SQLite和MYSQL時應該使用的問題又拿出了一遍又一遍。要知道何時何地使用SQLite或MySQL數據庫管理系統是合適的,首先重要的是要知道它們之間的區別是什麼,即使它們之間存在任何差異。

簡而言之,SQLite是一個實現它不需要服務器和工作在很少或沒有配置獨立的事務性的SQL數據庫引擎的開源庫。另一方面MySQL也是和開源關係數據庫管理系統。

潛水右轉入回答這個問題的任務,我已經提供了一些東西SQLite是能夠做得很好的項目列表和我比較與MySQL

SQLite是一樣的:

  • 容易建立,很多情況下沒有配置或安裝需要 足夠大,使用數據庫,你只需要一個臨時的基礎上或用於測試目的
  • 不適合在那裏用戶法力因爲SQLite使用文件系統權限,所以需要使用gement,因此您無法使用GRANT和REVOKE等SQL語句。
  • 適合用在嵌入式應用和安裝,並嵌入到應用程序本身
  • 偉大的快速發展
  • 缺乏性能測量功能,其中對數據庫的併發事務需要
  • 不是好
  • 不適合SQLite將大型數據庫存儲在單個文件中,這可能會受到SQLite無法跨卷分割數據的操作系統的限制。
  • 不適合在需要客戶端/服務器架構的任何情況下使用 適合在中小型網站上使用。這些網站每天的點擊量平均在100K或更少。
  • 不容易擴展。變更表SQLite中是不允許的,除了添加列和重命名錶
  • 合適替代特設文件存儲通常使用其中fopen()函數,的fread()和fwrite應用程序的訪問的文件()的。
  • 不適合的情況下,需要存儲過程和在需要某些類型的連接的

MySQL是:

  • 更難以建立和用戶的配置一個必須 有利於創建臨時數據庫以及用於測試目的。這如果您有MySQL數據庫服務器和客戶端已經建立 很適合擔任管理用戶及其權限
  • 不適合在一些硬件嵌入,你仍然需要數據庫的服務器組件只會是實用的。MySQL的雖然是適合使用所提供的libmysql庫
  • 偉大的快速發展,在某些情況下
  • 非常適合對數據的併發交易,並非常適用於多用戶環境
  • 非常適合大規模生產應用嵌入到應用程序其規模甚至超過集羣數據庫配置
  • 非常適合使用在客戶端/服務器體系結構建立適合
  • 對小型,中型和採取以十億命中大型網站每天
  • 高度scalab使用就MySQL數據和表而言,MySQL數據庫管理員可隨時操作MySQL數據庫。這種擴展能力超越了磁盤,物理服務器和位置,並不是要取代fopen(),fread()和fwrite()。 MySQL管理自己的數據文件,而不是操作系統與存儲過程,觸發器,視圖以及其他主要關係數據庫管理系統常見的其他操作完全兼容的操作系統
  • 。 MySQL只提供這些功能與選擇的存儲引擎

有了這些提示,我當然希望他們是一個稱職的嚮導推你在正確的方向選擇的時候來的SQLite或MySQL之間選擇適合您的下一個項目之間。

更多修改: - 請按照以下指南學習導軌。

http://pragprog.com/book/rails4/agile-web-development-with-rails

http://railsforzombies.org/

http://www.amazon.com/dp/0596518773/

http://railscasts.com/

http://guides.rubyonrails.org/

使用MySQL的快速的解決方案。我假設u的使用Rails 3,添加

gem 'mysql2' 

在寶石文件並運行

bundle install 

以及與此更換你的database.yml文件..

 # MySQL. Versions 4.1 and 5.0 are recommended. 
     # 
     # Install the MySQL driver: 
     # gem install mysql2 
     # 
     # And be sure to use new-style password hashing: 
     # http://dev.mysql.com/doc/refman/5.0/en/old-client.html 
     development: 
      adapter: mysql2 
      encoding: utf8 
      reconnect: false 
      database: my_database_development 
      pool: 5 
      username: root 
      password: 
      host: localhost 

     # Warning: The database defined as "test" will be erased and 
     # re-generated from your development database when you run "rake". 
     # Do not set this db to the same as development or production. 
     test: 
      adapter: mysql2 
      encoding: utf8 
      reconnect: false 
      database: my_database_test 
      pool: 5 
      username: root 
      password: 
      host: localhost 

     production: 
      adapter: mysql2 
      encoding: utf8 
      reconnect: false 
      database: my_database_production 
      pool: 5 
      username: root 
      password: 
      host: localhost 

希望他的回答對你有意義。現在給你一個更好的快速提示。開始使用谷歌。

0

您可以輕鬆地使用MySQL的軌道。

在你的Gemfile:

gem 'mysql' 

在你的database.yml

development: 
    adapter: mysql 
    username: ... 
    password: ... 
    database: ... 
+0

SQLite與MySQL相比有什麼優勢嗎?或者有沒有MySQL與SQLite有什麼優勢? –

+0

SQlite可能適用於小型應用程序,但它只是驅動程序訪問的單個文件。 mysql是一個連接到外部程序,並且可以更好地處理併發訪問的方式。當一個人只能訪問文件時通常使用Sqlite,這對於一個網站來說非常困難,其中重點在於併發訪問。 – Femaref