文档章节

由大集合的映射引出的深层的OR不匹配问题

猪刚烈
 猪刚烈
发布于 2014/10/12 11:40
字数 692
阅读 3
收藏 0
点赞 0
评论 0

      很多优秀的ORM工具只解决了对象模型和关系模型在结构上的不匹配问题,但是在行为层面上,这两种模型也有着各自不同的运作方式,这种不匹配似乎更难以弥合。在一个典型的一对多关联中,如果多方是一个数量巨大的集合,那么几乎在任何情况下,我们都不能直接加载这个集合到内存中,进而也就不会有基于这个集合的任何遍历或过滤操作。这些操作本应是对象模型的一些基本行为模式,而在“巨大数据量”的现实面前变得幼稚而可笑。

      是对像模型错了么?如果我们不映射这个一对多关联又会怎样呢?从对象模型的角度看,关联双方的关联关系往往反映的是业务层面上事物间深刻的内在关系,这种关系本身就是业务逻辑的一部分,去除这种关联,会能让对象模型无法揭示真实的业务逻辑,变得和真实的业务模型渐行渐远,也就失去了建立对象模型的意义。
      因此,关联关系是一定要在模型中做出来的,但在目前这种尴尬的境地下,只有Domain Collection能从一定程度缓和这一矛盾,但也仅限于对集合的遍历操作。至于包含复杂规则的过滤操作,可能需要specification模式的帮助。这一点需要进一步的实践。

      最后接着大集合的这个例子再扩展开来讲,在对象模型中,“定位”某个对象往往是从某一已知对象(往往是聚合根)一步步“导航”得到的。这一过程暗含了这样的背景:即所有对象都已载入内存,可供程序任意导航,这显然是过于理想化的要求。相较而言,通过关系模型的关系运算直接查找到某一对象要高效的多得多。但如果我们这样做了,我们将不得不失去另外一些东西,那就是在对象模型中“导航”的过程既是业务逻辑的体现也是通过对象模型求解的过程。而现在你只能把这些揉碎掺杂到一条SQL中去了。你不能否认的是,在不考虑性能的前提下,通过导航找到一个对象要比一条SQL来得自然的多。这也是我认为OR关系中最难以调和的矛盾。

本文转载自:http://blog.csdn.net/bluishglc/article/details/5959233

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
模型的过拟合

本文收录在无痛的机器学习第二季目录。 ICLR17会议的一篇名为《Understanding deep learning requires rethinking generalization》的文章引起了大家的广泛关注,而且在知乎上也引发了一系列...

冯超 ⋅ 2017/03/29 ⋅ 0

从哈希存储到Bloom Filter

从哈希存储到Bloom Filter 焦萌 2007年1月28日 先解释一下什么是哈希函数。哈希函数简单来说就是一种映射,它可取值的范围(定义域)通常很大,但值域相对较小。哈希函数所作的工作就是将一个...

Picasso ⋅ 2011/09/24 ⋅ 0

KMP字符串匹配算法

KMP算法,Knuth-Morris-Pratt Algorithm,一种由Knuth(D.E.Knuth)、Morris(J.H.Morris)和Pratt(V.R.Pratt)三人提出的一种快速模式匹配算法。 KMP朴素算法 原理:子串pattern依次与目标串tar...

长平狐 ⋅ 2013/01/06 ⋅ 0

基于深层神经网络的语音 增强方法研究

近年来,随着深层神经网络(在语音识别领域的成功应用,给了语音增强任务的研宄人员很多启发。的深层非线性结构可以被设计成一个精细的降噪滤波器。同时基于大数据训练,可以充分学 习带噪语...

chenxiao60 ⋅ 2016/06/07 ⋅ 0

一名工科生眼中的数学分析(上)

写完毕业论文后,闲来无事,准备梳理一下脑中的数学知识,能够建立更好的知识体系是我的目标,如果对试图厘清数分思路的同学有所帮助也是极好的。本来预计要写一篇文章的,结果写起来发现一篇...

zhenhang.sun ⋅ 2016/12/30 ⋅ 0

视觉SLAM中的李群&李代数基础

前言 在做SLAM研究的时候,会涉及到对旋转矩阵求导的问题。这时候需要使用矩阵李群的知识,将旋转或者变换等矩阵李群形式,映射到李代数上求解。本文主要涉及两个特殊矩阵李群:特殊正交群(...

zzlyw ⋅ 2017/04/07 ⋅ 0

你必须要知道CNN模型:ResNet

作者:叶 虎 编辑:张 欢 深度残差网络(Deep residual network, ResNet)的提出是CNN图像史上的一件里程碑事件,让我们先看一下ResNet在ILSVRC和COCO 2015上的战绩: 图1 ResNet在ILSVRC和...

u013709270 ⋅ 2017/12/18 ⋅ 0

初次使用遇到的bug

@黄勇 你好: 读了下代码:试着用了下关于WebUtil有些小bug: private static boolean checkParamName(String paramName) { } 没有考虑到其他的缓存参数,如ext的ajax中的_dc=XXXXXX;容易导致...

byang ⋅ 2015/01/29 ⋅ 2

大数据过滤及判断算法 -- Bitmap / Bloomfilter

今天,有个同学向我咨询大数据的一些面试题,其中一类比较有代表性比如判断是否在集合内,比如10个url,判断一个url是否在集合内,还比如有个1~100万个连续无序数字,随机取出里面的N个,求这...

长平狐 ⋅ 2013/01/05 ⋅ 0

写给大家看的机器学习书(第二篇)

赛前采访 在开始这个系列的第二篇文章之前,非常荣幸得采访到霹霹博士。霹霹目前在阿里巴巴认知计算实验室做AI方向的艰深探索,我第一次跟他交流机器学习跟数据挖掘的区别时得知,数据挖掘领...

八汰 ⋅ 2017/02/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

关于“幂等”操作

一个幂等(idempotent)操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 开发中, 我们经常考虑幂等操作的场景有“接口调用”、“MQ消费”、“自动任务”等 接口调用, 可能出现...

零二一七 ⋅ 25分钟前 ⋅ 0

Dubbo服务服务暴露之ProxyFactory Invoker

Dubbo服务暴露过程中有涉及到调用ProxyFactory 中方法获取Invoker对象的过程,现在我们来深究下源码,来看下这个过程是在做些什么,返回的Invoker 对象是什么,我们来看一下代码的切入点: ...

哲别0 ⋅ 40分钟前 ⋅ 0

GP两种连接方式性能测试

GP两种连接方式性能测试 Pivotal import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class GPQueryStrin......

仔仔1993 ⋅ 44分钟前 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 今天 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 今天 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 今天 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 今天 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 今天 ⋅ 0

linux 信号机制

signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协...

xxdd ⋅ 今天 ⋅ 0

my.cnf, my-small.cnf, my-medium.cnf, my-large.cnf

1. my-small.cnf # Example MySQL config file for small systems.## This is for a system with little memory (<= 64M) where MySQL is only used# from time to time and it's importa......

周云台 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部