• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ruby elixir_Elixir ETS与Redis

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

ruby elixir

学习Elixir可以挑战您对编程了解的所有知识。 Redis与您的数据库一样,正成为许多Web堆栈中假定的一部分。 但是有了Elixir,您需要吗? 您甚至需要一个数据库吗?

Web应用程序操作的不断变化的世界

这是当今Web应用程序的标准操作模式:

  • 一个请求进入;
  • 前往少数Web服务器之一;
  • 从数据库中获取一些数据(或将一些东西放入其中);
  • 用它做一些东西;
  • 向客户端返回响应。

在许多情况下,我们需要以很高的速率写入数据或缓存数据,以避免重新处理昂贵的查询。 我们还需要这些大容量缓存和写入位置,以供我们所有的Web服务器使用-这就是Redis所在的位置。

在我们赖以生存的世界中,这是有道理的。

但是BEAM / OTP(运行Elixir的Erlang VM)的世界是不同的。 在这个世界上,您的Web服务器以群集的形式连接在一起,即使在不同的数据中心上也可以定期相互通信。

在这个世界上,不需要互斥锁来协调变量访问,写繁重的负载。 在这个世界上,您的平台附带了已经内置在运行时中的三个不同数据库( ETSDETSMnesia ),以及许多其他选项(例如Agent)来处理这些情况。 甚至可以使用Riak Core之类的开源库来提供服务器内数据库,该数据库随着Web服务器的增长而自然增长。

并发级别就像您从未经历过的。 由于每个进程都是预先安排好的,因此单个处理器暂存循环无法阻止系统的其他部分像使用Node和Go这样的语言及时响应。

这改变了游戏。 开箱即用地以可靠,容错的方式满足您的所有需求,随应用程序的增长自然增长,而无需维护单独的系统。 那太酷了。 这意味着,当您启动Elixir应用程序时,您必须问自己一些自己不习惯的问题,例如“我是否需要另一个数据库?”,“我是否完全需要一个缓存系统?”或“还有其他好处要考虑吗?”

附带说明一下,内置这些选项使Elixir成为嵌入式系统真正有趣的平台(有关更多信息,请参阅Nerves项目)。

比较功能

在这样的比较中谈论功能时,我们必须对其进行一些限定。 借助BEAM / OTP,您将拥有大量工具,这些工具将使您能够根据应用程序的特定需求在应用程序中创建功能。

“特殊需求”是这里的关键部分。 在每个步骤中,我们都面临着挑战,即应在BEAM自身内部还是作为外部系统/依赖项来满足特定需求。 下表将尝试进行这种比较。 请记住,BEAM列将反映提供给整个系统的本机功能(例如传递有序消息以支持原子操作)。

从上表可以看到,Redis的大多数功能都在内置选项中可用。 最大的区别只是确定系统中哪个选项有意义。 三个指定选项之间的主要区别是:

  1. ETS –基于RAM的表,单节点
  2. DETS –基于磁盘的表,单节点
  3. Mnesia –基于RAM /磁盘的事务RDBMS,在节点之间透明分布

BEAM突出显示某些功能,因为系统具有高度并发,分布式,顺序的消息传递特性,因此即使对于任何解决方案而言,实现某些功能(例如LRU Cache或PubSub)也并非微不足道。 对于地理空间,没有一个好的内置选项,但是目前,仅此而已。

结论

这并不是说您永远不需要Redis。 并非每个Elixir应用程序都必须部署到可以群集的环境中。 例如,如果您使用Phoenix通道和/或Phoenix Presence,但无法在无法集群的情况下部署到Heroku,则有一些适配器可以像其他语言一样利用Redis作为中介。

通过与ElixirConf上的许多Elixir开发人员交谈,我发现一件事是,整个社区非常务实。 如果没有意义,请不要聚类。 不要仅仅因为可以就进行热部署。 同样,不要仅仅因为可以而就避免使用Redis,但是同时,不要在习惯上创建依赖项。

翻译自: https://www.javacodegeeks.com/2016/09/elixir-ets-versus-redis.html

ruby elixir


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
转Ruby的安装发布时间:2022-07-14
下一篇:
Ruby文档查阅方法发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap