找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1256|回复: 20

[职业生涯] 求IT高手乱入

[复制链接]
发表于 2015-10-19 11:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
本帖最后由 我想我会 于 2015-10-20 08:49 编辑



问到请删





                                                     
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2015-10-19 11:44 | 显示全部楼层
这个问题确实太复杂了,所以表达起来也很复杂,都不知道该怎么说才好了,不知道大家能不能看明白,希望有相关经验的高手,一看就能明白我的意思吧,给点指点吧!
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 11:51 | 显示全部楼层
弄个hana估计就不必担心啥了。

真要是讲效率,名堂很多的
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 12:23 | 显示全部楼层
我觉得楼主这样的线性存储也不行吧,一个大表塞那么多数据,随便做点儿操作不是要慢死。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 12:49 | 显示全部楼层
输入进库,怎么入都行,关键是你之后用的时候有什么要求?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 12:59 | 显示全部楼层
本帖最后由 xiabai84 于 2015-10-19 14:59 编辑

希望我理解你的问题了。。。 你的目的其实就是想把一个存结构化数据的大表 灌进一个第三范式的数据库里?

我对这种量比较大的数据都基本都是用ETL工具入库(特别你经常读一些什么EXCEL, CSV, XML, TEXT,或者非结构化类型的文件,然后写进数据库)。原因很简单,1 可以节省代码量, 2 保证数据质量(什么空行,主键多次插入,slowly changing dimension各种各样操作), 3 入库效率高。

有可能的话使用集群模式, 多线程读写, 能用bulk load 就优先用, ETL工具里包括各种操作行转列列转行应有尽有。 你的应用不就是应该负责单行数据的增删查改嘛,而不是靠你的应用去搞ETL。。。  进表后想优化就是比较大的课题了,这个看你业务逻辑需要, 写高性能的查询语句, 尽量走索引是最基础的优化。。注意数据库的 Optimizer 和 excution plan
建议使用Pentaho 或者Talent, 感觉你的样子像是java 程序员, 这两个东西都是开源的,你上手应该能比较快。  1500万行离大数据的等级还差很远。。用classic 的BI手段就能处理。

Java 程序设计不是我的强项,没法给意见。 偶尔自己家里做着玩的话我个人喜欢Netbeans, 懒人首选。。 你在数据库里建好模型,直接对应着生成代码, 随便改改就基本有想要的前端效果了。

楼上的回复老实说我没看懂。。。大概是我low 了。
SAP Hana是内存式的列存储, 是NoSQL的一个分支, 搂主其实就是一个很简单的关系型数据库,而且是CSV 输入。 他好像也没说有什么查询的瓶颈或者非结构化数据建模的困难。 能用开源技术不懂为何用SAP。。。1500万行的效果开元和收费应该没啥区别吧? 最多最多搞个小集群不涉及到大数据技术。

点评

谢谢这么详细的回答  发表于 2015-10-19 14:41
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 13:21 | 显示全部楼层
你的方法没问题,说你不对的人是想把功能模块化,设计模式嘛。如果源数据是xml的,你的importer没法用了,要从头写。还有就是时间问题,如果一次性的用,一点问题没有,其他类你反正要今后继续用的。

像楼上说的,用talent比较好,不用自己码。1500万行小意思啊!

点评

我们这个系统每个模块都是自己的importer,有些是xml,有些是csv,还有其它格式的,但都不用考虑,只考虑本模块,写csv的就可以了  发表于 2015-10-19 15:54
其实pentaho 现在越来越强了。。绝对值得搞~ 尤其有java 功底,可以做2次开发  发表于 2015-10-19 14:55
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 13:36 | 显示全部楼层
你说的这东西是个factory,查设计模式的factory pattern。 excel数据进入factory, 校验并生成对象,对象再用hibernate之类导入数据库。

区别就是你不能自己写new 关键字来生成对象,因为写错了出来都是错的。工厂类(当然也是你开发的)会先检验再生成对象。同时工厂类里封装好的方法会更便于单元测试

一行一行循环excel当然是可以的,但是不够强壮易读,尤其数据例外或错误多的时候

点评

谢谢,我还想问几个问题  发表于 2015-10-19 14:49
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 13:44 | 显示全部楼层
补充一下,lz现在的实现方法最明显的问题是,

如果你运行程序运行了两遍,那么所有数据都会被插入两次,直到sql因为违反数据库constraints失败。插入前不仅要校验数据格式,还要检查是否已经存在。如果数据间有依存关系必须保证一次插入。不过这个应该好的数据接口库就有实现,应该。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-19 15:39 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复

使用道具 举报

发表于 2015-10-19 16:12 | 显示全部楼层
你上级和我说的是一个意思,你再仔细看看我写的

引用:
“3. 本block 没错误, 检测map 看看公司,服务,船,航线,港口 是否已经存在,如果存就从map里取出它,如果不存在就 new 一个新的objekt,。。。”

区别就在这儿,你这个检测map是你的importer的一个对象,new 也是直接写在importer里面的,这样是说你有一个超级controller (就是这个importer), 所有逻辑(无论什么entity)都在里面,这就是面向过程。。。起码不是面向对象。

正确的是,比如要插入block对象,创造对象和检验存在都应该是block类的职责。例如:
static Bool Block.exist(name, date, ...);
static Block Block.createBlockObject() throws InvalidDataException; - 对于block对像,只有这个方法里有new 关键字
void Block.savetoDatabase();

好处是,一旦有新类需要加入,主程序(importer)只需要极小的修改。具体推荐找一些factory pattern的代码读一读,祝你本周能顺利完成这个任务
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 16:15 | 显示全部楼层
惯例补充一下,这个提高的是开发和维护效率,运行速度不会提升。并行之类的是其他Thema, 一次性的数据迁移不需要考虑这些。歇晌,下班
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-19 18:03 | 显示全部楼层
kudoshinqi 发表于 2015-10-19 16:12
你上级和我说的是一个意思,你再仔细看看我写的

引用:

谢谢,非常有道理,很可能就是这个意思,我去考虑一下,如何按照这种方式修改一下,谢谢 X 1000!

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-19 21:34 | 显示全部楼层
我想总算看明白了你的问题,你是直接在impoter里读cvs数据,直接生成了entity,对不对?你需要在中间加一层BO,来映射entity。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-19 21:57 | 显示全部楼层
qwycd 发表于 2015-10-19 21:34
我想总算看明白了你的问题,你是直接在impoter里读cvs数据,直接生成了entity,对不对?你需要在中间加一层 ...

我就是这个意思,BO 是什么?能详细说说吗?怎么加呢?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2015-10-20 13:11 | 显示全部楼层
我想我会 发表于 2015-10-19 21:57
我就是这个意思,BO 是什么?能详细说说吗?怎么加呢?

BO就是business object,可以理解为业务模型,不和数据库有任何联系,但这样做代码量暴增。如果是和系统无关的stammdaten进数据库,我认为你的做法是高效的,并无不可。如果是系统的produktion,因为hibernate一二级缓存同步的原因,非常不建议这么做。

主要看你有多少时间了。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-20 16:28 | 显示全部楼层
本帖最后由 我想我会 于 2015-10-20 16:31 编辑
qwycd 发表于 2015-10-20 13:11
BO就是business object,可以理解为业务模型,不和数据库有任何联系,但这样做代码量暴增。如果是和系统 ...


谢谢,估计说的很可能就是这个模型! 能说说一般BO都是怎么做的吗?

上级说这么个model,我之前没听说过,所以我不知道具体的做法,都给我弄晕了,这个属于那方面知识?

能说说吗?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

我是开心果

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+2, 2025-6-1 11:20 , Processed in 0.097844 second(s), 34 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表