你使用过IntersystemsCaché吗?你有什么经历?

Moh*_*amy 13 rdbms caching intersystems-cache

我几乎没有声称使用CacheDB而不是经过验证的RDBMS.但我无法理解它比RDBMS更好?如果是这样,为什么它们以Cache为前缀?

是RDBMS还是Caché服务器?您能否在项目中写下有关用例的简要说明?

psr*_*psr 29

缓存是一种独特的野兽,根据您的使用方式,它可以被描述为无SQL数据库,RDBMS或面向对象的数据库.当然,对所有人来说并非所有事情都是如此,因此了解每个人的方式都需要一些解释.

这一切都建立在称为关系前程序语言之上流行性腮腺炎(可怕的市场名称是可怕的谷歌搜索一样,所以现在他们只是使用缓存这是唯一可怕的谷歌搜索).该语言包括将数据保存为本机命令的操作,因此可以在不影响应用程序代码的情况下优化持久性引擎.

这种语言有一种集合类型,一个带有0个或更多排序键的键/值字典,以及一种数据类型,它们具有操作符来执行字符串操作,而其他操作可以执行大量操作.所有键和值都是该数据类型的实例.

这已经有很长一段时间了,几十年前编写的应用程序仍在运行.

这种语言早于第一个RDBMS,但后来该语言的实现者添加了RDBMS支持.缓存将SQL(静态或动态)编译为更现代的MUMPS版本,然后驱动存储引擎.如果这听起来很怪异并不是真的 - 每个RDBMS都会将SQL编译或解释为它的存储引擎的方向.

缓存已演变成面向对象的语言(就像许多其他语言一样),这意味着现在有2种数据类型,原始数据加上对象类型.对象不能直接作为键或值存储在磁盘上,但可以继承或实现持久性方法.

因此,使用Cache的人可能会使用面向对象的代码,SQL或过程代码,或者根据需要将它们组合在一起.

有哪些优点和缺点?

对于运行传统MUMPS应用程序的人来说,他们几乎别无选择,因此我将专注于其他所有人.

一个很大的缺点是有一个小的市场份额(相对于其他的RDBMS,尽管可以相比其他产品代替),售价在同一个球场作为一个商业RDBMS(尽管它可能是一个更容易制定出个体处理它的某些特殊用途),因此需要某种令人信服的理由来购买它.

此外,较小的市场份额意味着开发商的市场较小.此外,它可以使用的不同方式意味着并非所有的Cache开发人员都适合所有项目 - 过去20年中维护遗留(从结构化编程之前)应用程序的人可能不太擅长将Cache用于面向对象的Web应用.

另一个问题是,Intersystems(供应商)提供的代码库几乎没有任何代码库,而且这些代码库不可能与.NET或Java这样的东西竞争.

一个很大的优点是Cache Object Script(现代MUMPS语言)比你通常在数据库中获得的语​​言要多得多.这对您在数据库中拥有的业务逻辑更具优势.

实际上,如果你将它用于你的业务逻辑,恕我直言就可以获得Cache的大部分优势.将数据库和业务逻辑结合起来更简单,更容易获得高性能,并且在环境支持这一点时不会特别导致长期维护问题.

在Cache中组合数据库和业务逻辑的缺点是移植要么非常困难,通常您的业务逻辑是用自由语言编写的,并且您不需要任何类型的许可来运行它.在这里你几乎就像你的业务逻辑在TSQL中一样,除了它更难移植.

如果你对此感到满意,那么很多东西都很可爱.没有ORM - 商业或手工编码.该SQL编译成代码,你可以看看(它的产生,所以它的速度优化了可读性和变量名可以是一些类似"T32",但它仍然是可读的,如果你要),甚至通过或断点步骤.编写SQL游标的成本非常低.您实际上可以编写面向对象的代码.它被解释,因此更容易快速发展.如果你想要速度,你可以关闭事务并转到无SQL.

我也发现它很容易管理.在我的大多数经验中,没有DBA这样的东西 - 你只是不需要一个.

  • 我不同意最终评论说没有DBA.它通常只包含在编程团队的角色中,编程团队必须完成一般的DBA任务.在我的公司内部,DBA角色基本上分为3人1个程序DB更改,1部署这些更改,另一个维护备份和性能调整.由于性能工具很少,我们不得不多次聘请Intersystems来进行DBA优化任务.主要的缺点是Cache程序员很少,因此产品维护成本在这方面有所增加. (3认同)
  • Curretly我在大学学习,我讨厌它.特殊语言(..而不是这个),(设置a = 1,而不是a = 1),很多问题,小文档和TOO小例子.版本控制问题,当你一起工作时.基于Win 8 x64,frined有问题. (2认同)