第三十八章 持久对象和SQL - 持久类的特殊选项

2023-09-27  本文已影响0人  Cache技术分享

第三十八章 持久对象和SQL - 持久类的特殊选项

持久类的特殊选项

IRIS 中,所有持久类都在中扩展 %Library.Persistent(也称为 %Persistent)。此类为 IRIS 中的对象 SQL 对应关系提供了大部分框架。在持久类中,有如下选项:

当打开持久对象时,可以指定并发锁定的程度,因为持久对象可能会被多个用户或多个进程使用。

当打开对象实例并引用对象值属性时,系统也会自动打开该对象。此过程称为混合。然后也可以使用该对象。在下面的示例中,当打开 Sample.Person 对象时,会混合相应的 Sample.Address 对象:

 Set person=##class(Sample.Person).%OpenId(10)
 Set person.Name="Andrew Park"
 Set person.Address.City="Birmingham" 
 Do person.%Save()
import iris
person=iris.cls("Sample.Person")._OpenId(10)
person.Name="Andrew Park"
person.Address.City="Birmingham"
person._Save()

类似地,当你保存一个对象时,系统也会自动保存它的所有对象值属性;这称为深度保存。可以选择执行浅保存。

在此类(或其他类)中,可以定义其他查询。

关系是一种特殊类型的对象值属性,它定义两个或多个对象实例如何相互关联。每个关系都是双面的:对于每个关系定义,都有一个相应的逆关系定义另一面。 IRIS 自动强制执行数据的引用完整性,一侧的任何操作在另一侧立即可见。关系自动管理它们在内存中和磁盘上的行为。它们还提供了优于对象集合的扩展性和并发性(请参阅集合类)。

索引提供了一种优化跨持久类实例的搜索的机制;它们定义了与某个类相关的常用请求数据的特定排序子集。它们对于减少性能关键型搜索的开销非常有帮助。

索引可以根据属于其类别的一个或多个属性进行排序。这使可以对返回结果的顺序进行大量特定控制。

此外,索引还可以存储基于排序属性的查询经常请求的附加数据。通过包含附加数据作为索引的一部分,可以极大地提高使用索引的查询的性能;当查询使用索引生成其结果集时,它可以在不访问主数据存储设施的情况下执行此操作。

注意:无法在 Python 中定义关系、外键或索引。

上一篇下一篇

猜你喜欢

热点阅读