第四十一章 持久对象和SQL - Storage

文章目录

第四十一章 持久对象和SQL - Storage

Storage

每个持久类定义都包含描述类属性如何映射到实际存储它们的Global的信息。类编译器为类生成此信息,并在修改和重新编译时更新它。

存储定义概览

查看此信息可能很有用,在极少数情况下,可能需要更改一些详细信息(非常仔细)。对于持久类,集成开发环境 (IDE) 将显示类似以下内容作为类定义的一部分:

xml 复制代码
<Storage name="Default">
<Data name="PersonDefaultData"><Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Name</Value>
</Value>
<Value name="3">
<Value>SSN</Value>
</Value>
<Value name="4">
<Value>DOB</Value>
</Value>
...
</Storage>

持久类使用的Globals

存储定义包括几个指定存储数据的Globals的元素:

xml 复制代码
<DataLocation>^Sample.PersonD</DataLocation>
<IdLocation>^Sample.PersonD</IdLocation>
<IndexLocation>^Sample.PersonI</IndexLocation>
...
<StreamLocation>^Sample.PersonS</StreamLocation>

默认情况下,使用默认存储:

  • 类数据存储在该类的Globals数据中。它的名称以完整的类名(包括包名)开头。名称后附加 D。例如:Sample.PersonD
  • 索引数据存储在该类的Globals索引中。其名称以类名开头并以 I 结尾。例如:Sample.PersonI
  • 任何保存的流属性都存储在该类的流Globals中。它的名称以类名开头并以 S 结尾。例如:Sample.PersonS

重要提示:如果完整的类名很长,系统会自动使用类名的哈希形式。因此,当查看存储定义时,有时可能会看到Gloabl名称,例如 ^package1.pC347.VeryLongCla4F4AD。如果出于任何原因打算直接使用类的数据Globals,请务必检查存储定义,以便了解Gloabl的实际名称。

注意

请注意以下几点:

  • 切勿重新定义或删除已存储数据的类的存储。如果这样做,则必须手动重新创建存储,因为下次编译类时创建的新默认存储可能与该类所需的存储不匹配。
  • 在开发过程中,可能想要重置类的存储定义。如果还删除了数据并稍后重新加载或重新生成数据,则可以执行此操作。
  • 默认情况下,当在开发过程中添加和删除属性时,系统会通过称为模式演化的过程自动更新存储定义。

例外情况是对 <Type> 元素使用非默认存储类。默认为%Storage.Persistent;如果不使用此存储类别,IRIS 不会更新存储定义。

相关推荐
程序员鱼皮1 天前
我看到了 17 年前的 GitHub,竟然长这样?!
程序员·互联网·github·编程·项目
鼠鼠我捏,要死了捏2 天前
Redis 集群模式读写分离与分片策略方案对比分析与实践指南
redis·cache·cluster
鼠鼠我捏,要死了捏3 天前
Redis缓存穿透、缓存击穿与雪崩防护及性能优化实战指南
redis·cache·performance
程序员鱼皮5 天前
扒了下 Cursor 的提示词,被狠狠惊艳到了!
计算机·ai·程序员·大模型·互联网·编程
爱喝白开水a8 天前
从零开始学无监督学习:图像混合与标签平滑技术详解,收藏不走丢
人工智能·深度学习·学习·ai·大模型·编程·ai大模型
XueminXu10 天前
Spark引擎中RDD的性质
spark·cache·map·rdd·flatmap·弹性分布式数据集·collect
网络安全大学堂11 天前
【网络安全入门基础教程】网络安全就业方向(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·网络安全·程序员·编程
驱动探索者11 天前
Linux arm cache 入门
linux·运维·arm开发·cache
smilejingwei12 天前
数据分析编程第六步:大数据运算
java·大数据·开发语言·数据分析·编程·esprocspl
triticale13 天前
【计算机组成原理】LRU计数器问题
cache·计算机组成原理·lru