【问题标题】:Migration from MySQL to SQLite从 MySQL 迁移到 SQLite
【发布时间】:2011-11-05 10:38:13
【问题描述】:

我使用 MySQL 数据库,但由于使用 Rails,我知道我必须使用 SQLite。现在我有两个问题:

1 - 现在我的电脑里有 MySQL ,如果我安装 SQLite ,会有什么问题吗?比如他们之间有没有冲突?

2 - 它们在语法上有什么不同?

【问题讨论】:

  • "但是由于我使用 Rails,我知道我必须使用 SQLite" errr,您可以将 MySQL 与 Rails 一起使用。而且不会有任何问题,SQLite 只是一个动态链接库,而 Ruby 有它的 gem。
  • 在我正在阅读的书中,作者说 In Ruby SQLite 比 MySQL 好得多。
  • 这是不对的。它可能适用于小型应用程序,但不适用于大型应用程序。
  • 在书中作者说“...如果您没有要连接的 MySQL 服务器,您需要向您的网络托管服务提供商询问详细信息或安装 MySQL 版本在你的本地机器上”现在我不是指他。与 Ruby 连接的正确 MySQL 版本是什么?
  • 我读了一本书,遇到了一个问题,然后我去这个网站问这个问题现在有人给我减分,这真的很坑。

标签: mysql sql ruby-on-rails sqlite


【解决方案1】:

来自this问题..

SQLite 主要用于开发目的,因为它非常简单地设置数据库而没有太多挫败感,但它在并发方面的效率肯定低于 MySQL 之类的东西(这很可能用于 Web 应用程序)。因此,无论您是否在开发中使用 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 使用文件系统权限,因此您无法使用 GRANT 和 REVOKE 等 SQL 语句。
  • 适合在嵌入式应用程序和安装中使用并嵌入到应用程序本身中
  • 非常适合快速发展
  • 缺乏绩效衡量功能
  • 不适合需要数据库并发事务的地方
  • 不适合大型数据库,因为 SQLite 将数据库存储在单个文件中,这可能会受到 SQLite 无法跨卷拆分数据的操作系统的限制。
  • 不适合在需要客户端/服务器架构的任何情况下使用 适合在中小型网站上使用。这些网站平均每天点击量不超过 10 万次。
  • 不容易扩展。除了添加列和重命名表之外,SQLite 中不允许更改表
  • 适合在应用程序使用 fopen()、fread() 和 fwrite() 访问文件时替代 Ad-hoc 文件存储。
  • 不适合需要存储过程以及需要某些类型的连接的情况

MySQL 是:

  • 设置和配置用户要困难得多,这是必须的 适合创建临时数据库以及用于测试目的。这只有在您已经设置了 MySQL 数据库服务器和客户端时才实用 非常适合管理用户及其权限
  • 不适合嵌入某些硬件,因为您仍需要数据库的服务器组件。 MySQL 虽然适合使用提供的 libmysql 库嵌入到应用程序中
  • 在某些情况下非常适合快速开发
  • 非常适合数据上的并发事务,非常适合多用户环境
  • 非常适合在集群数据库配置上扩展的大规模生产应用程序
  • 非常适合在客户端/服务器架构设置中使用
  • 适用于每天点击数十亿次的中小型网站
  • 就 MySQL 数据和表而言具有高度可扩展性,并且可以在 MySQL DBA 的任何时候进行操作。这种扩展能力超越了磁盘、物理服务器和位置
  • 不打算替换 fopen()、fread() 和 fwrite()。 MySQL 管理自己的数据文件,而不是操作系统
  • 与其他主要关系数据库管理系统常见的存储过程、触发器、视图和其他操作完全兼容。 MySQL 仅通过选定的存储引擎提供这些功能

有了这些技巧,我当然希望它们能成为你在下一个项目中选择 SQLite 或 MySQL 时的有效指南。

更多编辑:-- 按照这些指南学习 Rails。

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的快速解决方案。我假设你正在使用 rails 3,添加

  gem 'mysql2' 

在你的 gem 文件中运行

  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

我希望他的回答对你有意义。现在为您提供更好的快速提示。开始使用谷歌。

【讨论】:

    【解决方案2】:

    您可以轻松地将 mysql 与 rails 一起使用。

    在您的 Gemfile 中:

    gem 'mysql'
    

    在你的 database.yml 中

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

    【讨论】:

    • SQLite 与 MySQL 相比有什么优势吗?或者相反,MySQL 与 SQLite 相比有什么优势吗?
    • SQlite 可能适用于小型应用程序,但它只是驱动程序访问的单个文件。 mysql是一个连接的外部程序,可以更好地处理并发访问。当一次只有一个人可以访问文件时,通常使用 Sqlite,这对于专注于并发访问的网站来说是相当困难的。
    猜你喜欢
    • 2020-06-17
    • 2023-03-12
    • 2014-02-08
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多