我用psql在PostgreSQl数据库中创建了一个新模式:
CREATE SCHEMA my_schema;
Run Code Online (Sandbox Code Playgroud)
但是当我发出\dt命令时,我只看到public模式中的表.不过,我可以访问所有的表my_schema用my_schema.table_name.
如何查看psql中所有模式的所有表?
我想构建一个基于Erlang/OTP的系统,它解决了一个"令人难以置信的并行"问题.
我已阅读/浏览过:
我有进程,消息,监督,gen_servers,Logging等的要点.
我确实理解某些架构选择取决于所关注的应用程序,但我仍然想知道ERlang/OTP系统设计的一些一般原则.
我应该从一个主管的几个gen_servers开始,并逐步建立?
我应该有多少名主管?如何确定系统的哪些部分应基于流程?我该如何避免瓶颈?
我以后应该添加日志吗?
Erlang/OTP分布式容错多处理器系统架构的一般方法是什么?
问题
我有一组客户机,它们是企业Web应用程序的一部分.每台机器运行相同的软件,这是一个连接到服务器的基于PyQT的Web客户端.这个客户端软件定期更新,我希望有一些配置/配置工具,允许在每台机器上拥有相同的环境,从而在每个客户机器上轻松部署和配置软件.
问题是我尝试使用Chef,但实际维护Chef知识和技能需要付出很多努力(我们没有专门的Ops人),而且如果某个第三方存储库不再存在,则Chef配方可能会失败可用(这是一个主要的塞子).
我想尝试使用Docker解决问题,但我仍然不知道是否可以设置允许某些基于GUI的软件运行的图像/容器.
题
是否可以使用Docker为基于GUI的应用程序(PyQt/QT)提供开发/生产环境?如果是的话,接下来的第一步是什么?
最近我开始阅读有关使用虚拟化软件构建开发环境(我是初学者)的看法,并且"基础架构作为代码"似乎是一个非常强大的概念.
我非常喜欢这里描述的工作流程结构:
但是,我仍然不太明白如何在生产服务器上传输和部署代码.
据我所知,保持DEV和PROD环境相同的常用方法是将Production服务器实例管理为另一个要使用Chef配置的虚拟映像.我可以在Production服务器上安装完全相同的操作系统,因为我(和团队)每天都使用VirtualBox-Vagrant-Chef.
但是,生产服务器可能具有与虚拟客户机操作系统中的硬件不同的硬件,这可能会再次导致不一致.
所以,这是一个问题:
从使用VirtualBox-Vagrant-Chef工具链管理的开发环境向生产服务器传输和部署代码的已知和常见最佳做法是什么?这种做法是否允许任何持续部署?
[编辑]:注意:是否有任何在生产服务器上运行与Chef/Vagrant配置相同的VM实例的做法,如此图所示?
我想在VPS上开发和部署Erlang/OTP应用程序.
我非常熟悉在本地机器上开发Erlang代码,我的问题是关于部署.
基本上,我想知道我应该采取哪些步骤将Erlang代码从本地机器移动到生产服务器并使其运行,即可供用户使用.
注意:我已经阅读了一些关于Erlang和命令行,Erlang 代码模块,Erlang 版本的文档,但我仍然不确定如何执行所需的任务.
但是,我想在服务器上部署基于Erlang的软件比sudo tasksel为LAMP做更棘手.
我计划有一个Erlang/OTP应用程序,它有Mochiweb,CouchDB(couchbeam)和boss_db作为依赖项.
所以,关于在生产服务器上部署所有内容的新手问题如下:
我即将使用Erlang构建一个系统(我的问题可以通过多个CPU更好地解决)并且我已经浏览过:
Erlang/OTP in Action一书(2)中说:"......编写非OTP Erlang代码实际上是一个高级主题,只有当你真的需要时才应该这样做.所以也许从来没有做过非OTP方式是一种祝福,因为你会立即就OTP事情找到合适的习惯......"
(2)坚持认为商业系统只能用OTP建造,而(4)轻轻地表明OTP不是唯一的方法.
另外,通过阅读(4)我发现从Erlang的基础知识中构建知识有助于理解OTP的工作原理(但不是相反).
所以,问题是:我应该选择Erlang/OTP来构建商业系统还是可以用纯Erlang来完成?
我有一个N工人流程的主管.像往常一样,主管可以向工作进程发送消息,并且有handle_cast一个工作人员向主管发送回复.
我怎样才能确定所有N名工人是否已经回复了主管?是否可以通过任何类型的事件处理来实现这一点 - 即告诉主管"好的,每个人都回复了"并且不让主管在某种ETS中每秒检查"所有N个进程已经回复"状态子注册表?
我听说通过代码中的元组指定记录是一种不好的做法:我应该总是使用记录字段(#record_name{record_field = something})而不是普通元组{record_name, value1, value2, something}.
但是如何将记录与ETS表匹配?如果我有一个包含记录的表,我只能匹配以下内容:
ets:match(Table, {$1,$2,$3,something}
Run Code Online (Sandbox Code Playgroud)
很明显,一旦我在记录定义中添加了一些新字段,这种模式匹配就会停止工作.
相反,我想使用这样的东西:
ets:match(Table, #record_name{record_field=something})
Run Code Online (Sandbox Code Playgroud)
不幸的是,它返回一个空列表.
我有一个Erlang/OTP应用程序,它执行一些业务逻辑.它是用Erlang编写的,主要用于容错,因为我可以轻松地重启系统中一个崩溃的组件(高正常运行时间是最重要的要求).它的每个组件都进行某种特定的"并行"计算.
作为一个工作周期的结果,应用程序生成一个值列表.让我们称这个Erlang/OTP应用程序为"后端".
此Erlang/OTP应用程序还将使用PostgreSQL服务器将结果存储在持久存储中,并存储其计算所需的其他元信息(尚未实现).
接下来我需要为这个Erlang/OTP应用程序添加一个前端 - 一个简单的基于Web的解决方案,可以为Web用户提供服务:接受来自他/她的计算请求,要求后端进行计算和从后端向用户返回结果.
没有可扩展性要求,我认为每天最大用户数不能超过1000.
所以我现在的任务是为我的后端Erlang/OTP应用程序实现一个通用的前端(常见的意思是我有一个典型的用例:访问该站点,注册,登录,使用该应用程序,获取结果一个漂亮的ajax'y看网页,退出).
一方面,我知道代码重用可以节省我很多时间:例如使用Ruby on Rails,我可以免费获得用户身份验证,密码存储,ajax接口和许多其他东西.
另一方面,我对设计一个包含Erlang/OTP + PostgreSQL数据库服务器后端和Web框架(RoR,Django等)作为前端的应用程序一无所知.
我想到了很多问题:Erlang/OTP和Web框架是否应该使用相同的PostgreSQL数据库来共享结果?将计算请求从Web框架发送到Erlang/OTP应用程序并将其取回的最佳方法是什么?我如何监督PostgreSQL服务器 - 它不受OTP容错的保护?
一般来说,我有一些异构软件组件,我想从它们构建一个工作系统('主要'组件是Erlang/OTP应用程序).
我应该从哪里开始这个任务?你能给我任何建议或提示要阅读的资源吗?
PS我试图阅读这个并按照链接,但不太了解.
UPD:我知道芝加哥Boss和其他Erlang网络框架确实存在,但我怀疑它们中的任何一个都有如此成熟的环境,充满活力的社区以及不同插件和库的巨大差异,例如Ruby on Rails,Django或任何PHP基于MVC框架.对?
UPD2:也许我必须更深入地阐述这一点:我还需要前端尽可能保持可维护性.在Erlang中执行它意味着我可能在找到合适的开发人员维护它时遇到问题; 在RoR,Django等中进行操作意味着我可以轻松找到维持前端并增长前端的工作人员.
在阅读了面向服务的体系结构原则网站和相应的维基百科文章之后,我想到了:Erlang/OTP平台可以被视为SOA平台,SOA应用程序可以构建在它上面.
唯一的事情是这样一个系统中每个服务的服务合同是非常具体的:为了在Erlang/OTP中调用服务,Orchestrating层必须通过Erlang消息调用或调用gen_server(取决于实现) .
这不会让任何对Erlang/OTP平台范围之外的服务的调用.
但是,如果我们尝试通过将所有相应的服务功能移动到基于Erlang的Web服务器(如Mochiweb)并基本上从gen_server更改每个服务的接口来调用XML来构建每个服务,该怎么办?
这将允许从基于WSDL的通用服务合同的标准化"砖块"组成各种应用程序.
此外,这种方法将让我们继续使用OTP主管和其他OTP功能,因为这样的服务仍将是OTP应用程序.
因此,问题是:您是否认为使用OTP Web服务器(Mochiweb)作为服务构建具有面向服务的体系结构方法的软件应用程序是一个好主意?附加的XML处理层能否破坏这种方法的所有优点?

erlang ×7
erlang-otp ×6
architecture ×3
chef-infra ×2
vagrant ×2
backend ×1
deployment ×1
docker ×1
ets ×1
frontend ×1
mochiweb ×1
postgresql ×1
production ×1
puppet ×1
qt ×1
record ×1
soa ×1
tuples ×1
virtualbox ×1
wsdl ×1