Caching 您是否使用过Intersystems Caché;?你有什么经验?

Caching 您是否使用过Intersystems Caché;?你有什么经验?,caching,rdbms,intersystems-cache,Caching,Rdbms,Intersystems Cache,我发现很少有人主张使用CacheDB而不是经过验证的RDBMS。但我不明白它为什么比RDBMS更好?如果是这样,为什么它们的前缀是Cache 是RDBMS还是Cachéserver?你能在你的项目中写一些关于用例的简要说明吗?系统间的缓存可以定义为面向对象的数据库 我认为它是一个带有面向对象脚本引擎的常规RDBMS数据库。Oracle有存储过程,缓存有对象脚本 我们正在迁移到Intersystems Cache以利用其BI和报告工具。我还没有遇到过MySQL或Oracle存储过程无法解决的情况。

我发现很少有人主张使用CacheDB而不是经过验证的RDBMS。但我不明白它为什么比RDBMS更好?如果是这样,为什么它们的前缀是Cache


是RDBMS还是Cachéserver?你能在你的项目中写一些关于用例的简要说明吗?

系统间的缓存可以定义为面向对象的数据库

我认为它是一个带有面向对象脚本引擎的常规RDBMS数据库。Oracle有存储过程,缓存有对象脚本

我们正在迁移到Intersystems Cache以利用其BI和报告工具。我还没有遇到过MySQL或Oracle存储过程无法解决的情况。我更喜欢用SQL过程编写所有内容,以避免将来的迁移问题

具有强大面向对象背景的人可能更喜欢使用ObjectScript


以防万一您还没有看到它,这里是一个

缓存是一个独特的野兽,取决于您如何使用它,那么它可以被描述为一个无SQL数据库、一个RDBMS或一个面向对象的数据库。当然,这并不是所有人都能理解的事情,所以要知道每个人的理解方式需要一些解释

这一切都建立在一种称为(糟糕的营销名称,对谷歌搜索也很糟糕,所以现在他们只使用缓存,这对谷歌搜索很糟糕)的前关系程序语言之上。这种语言包括将数据持久化为本机命令的操作,因此可以在不影响应用程序代码的情况下优化持久化引擎

这种语言有一种集合类型,一种包含0个或多个排序键的键/值字典,还有一种数据类型,它有运算符来执行stringy操作,其他运算符来执行numbery操作。所有键和值都是该数据类型的实例

这已经存在很长一段时间了,在此基础上编写的应用程序仍在运行

该语言早于第一个RDBMS,但后来该语言的实现者添加了RDBMS支持。缓存将SQL(静态或动态)编译成更现代的MUMPS版本,然后驱动存储引擎。如果这听起来很奇怪的话,其实并非如此——每个RDBMS都会编译或解释SQL,使其成为存储引擎的方向

Cache已经发展成为一种面向对象的语言(就像许多其他语言随着时间的推移所做的那样),这意味着现在有两种数据类型,一种是原始数据类型,另一种是对象类型。对象不能作为键或值直接存储在磁盘上,但可以继承或实现持久化方法

因此,使用缓存的人可能会使用面向对象的代码、SQL或过程代码,或者随意组合它们

优点和缺点是什么

对于运行传统流行性腮腺炎应用程序的人来说,他们几乎别无选择,所以我将关注其他人

一个很大的缺点是,is的市场份额很小(与其他RDBMS相比,尽管它可以与其他产品相比),并且其定价与商业RDBMS的定价相同(尽管对于某些特定的特殊用途,可能更容易达成单独的交易),因此,需要有某种令人信服的理由来购买它

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

另一个问题是,除了Intersystems(供应商)提供的代码库之外,几乎没有其他代码库,这些代码库在规模上不可能与.NET或Java之类的东西竞争

一个很大的优势是缓存对象脚本(现代流行性腮腺炎语言)比通常在数据库中使用的语言多得多。数据库中的业务逻辑越多,这就越有优势


事实上,如果您将缓存用于业务逻辑,那么它的大部分优势都会显现出来。将数据库和业务逻辑结合起来更简单,更容易获得高性能,并且在环境如此支持的情况下不会特别导致长期维护问题

在缓存中结合数据库和业务逻辑的缺点是,移植两者都非常困难,通常您的业务逻辑是用自由语言编写的,您不需要任何类型的许可证就可以运行它。在这里,您的业务逻辑与TSQL几乎处于同一条船上,只是移植起来更加困难

如果你同意的话,很多东西都很可爱。没有ORM-商业或手工编码。SQL被编译成您可以查看的代码(它是生成的,因此它针对速度而不是可读性进行了优化,变量名可以是“T32”,但如果必须的话,它仍然是可读的),甚至是单步执行或断点。编写SQL游标的成本非常低。实际上,您可以编写面向对象的代码。它是经过解释的,因此更容易快速开发。如果您想提高速度,可以关闭事务并禁用SQL


我也发现它很容易管理。在我对它的大部分经验中,没有DBA这样的东西——你根本不需要DBA

它不是RDBMS的设计。它是对象数据库。您可以使用sql接口,查看来自传统RDBMS的数据

几年前我试过,只是为了一个爱好项目,主要是为了学习

值得注意的一点是,在“所有云技术”出现之前,他们已经有了一个系统,在这个系统中,你们可以通过一个节点存储数据,它会将数据复制到其他几个节点。因此,如果您需要缩放,可以这样做。10年前,内部工具afaik完成了数据库间的数据复制。他们说有一个系统有五万多人在同一个基地在线工作。可以进行复制