【问题标题】:Does anyone know how to create a new database (through code) on heroku?有谁知道如何在heroku上创建一个新数据库(通过代码)?
【发布时间】:2013-12-12 21:57:48
【问题描述】:

我遇到了大量客户,他们都在不同的记录集上进行大量交易。 我说有 100 个客户,每个客户都有 50 万条产品记录。 以前我用不同的模式分离了他们的数据。它工作了一小段时间,然后我们注意到当一个客户端敲击数据库时,所有其他客户端都会停止运行。

然后我们转移到单独的 Heroku 实例。每个客户都有自己的应用程序,因此也有自己的数据库。这样做的问题是,加入新客户端意味着我们必须启动一个新的 Heroku 应用程序,而且通常该任务落在开发人员身上。

好的..这就是背景。
现在我的问题。我想为每个客户在 Heroku 上创建一个新数据库。 (都在一个“应用程序”中)。当我们加入新客户端时,我的应用程序将创建数据库并将用户名绑定到该数据库。 我可以用这样的东西轻松地创建一个数据库。

heroku addons:add heroku-postgresql:#{db_plan}

但我不知道如何获取这个新数据库的用户名和密码,所以我可以针对新用户存储它。

问题:如何获取他们在 heroku 上创建的数据库的用户名和密码?

【问题讨论】:

    标签: ruby-on-rails database heroku


    【解决方案1】:

    heroku 工具带有一个 pg:credentials 选项,我从未尝试过您正在尝试的内容,但您可以在此处获取该信息。

    Usage: heroku pg
    
     List databases for an app
    
    Additional commands, type "heroku help COMMAND" for more details:
    
      pg:credentials DATABASE                                   #  Display the DATABASE credentials.
      pg:info [DATABASE]                                        #
      pg:kill procpid [DATABASE]                                #  kill a query
      pg:killall [DATABASE]                                     #  terminates ALL connections
      pg:promote DATABASE                                       #  Sets DATABASE as your DATABASE_URL
      pg:ps [DATABASE]                                          #  view active queries with execution time
      pg:psql [DATABASE]                                        #
      pg:pull <REMOTE_SOURCE_DATABASE> <LOCAL_TARGET_DATABASE>  #  Pull from REMOTE_SOURCE_DATABASE to LOCAL_TARGET_DATABASE
      pg:push <LOCAL_SOURCE_DATABASE> <REMOTE_TARGET_DATABASE>  #  Push from LOCAL_SOURCE_DATABASE to REMOTE_TARGET_DATABASE
      pg:reset DATABASE                                         #  Delete all data in DATABASE
      pg:unfollow REPLICA                                       #  stop a replica from following and make it a read/write database
      pg:wait [DATABASE]                                        #  monitor database creation, exit when complete
    

    还有……

    Usage: heroku pg:credentials DATABASE
    
     Display the DATABASE credentials.
    
       --reset  # Reset credentials on the specified database.
    

    本地测试似乎表明它确实为您提供了数据库用户和密码。

    【讨论】:

    • 谢谢.. 你能想出另一种方法来处理这样的音量吗?那么当客户端 A 超级活跃时,客户端 B 不会感到筋疲力尽吗?我正在寻找,这是我(现在)最好的主意
    • 副手,不是真的...不过,这似乎是一个潜在的解决方案,因为您将拥有单独的数据库。我担心单个应用程序在单个“虚拟”服务器上运行,我不知道 Heroku 如何处理数据库实例(实际上是 AWS 实例)。它们是否也在同一个服务器实例下运行? (我不知道)
    • 我不认为他们这样做,但我只是基于他们处理公共数据库的方式。并且其他数据库计划为每个数据库提供自己的主机。
    • Heroku Postgres 的产品经理在这里,很想听听更多关于您尝试针对可能遇到的问题或可能无法按预期工作的问题所做的事情。如果您可以在 heroku.com 上联系 craig 或在 heroku.com 上联系 postgres,会很高兴
    • ...女士们先生们,这就是这个社区很棒的原因。
    猜你喜欢
    • 2014-03-27
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多