我想再次(再)-start与宝石/S。我已经为关系数据库完成了多个ETL转换,但对于如何在宝石/S中进行转换,我仍然不太清楚。
我想从不同的来源将数据加载到GemStone中。它可以是文件(csv、excel、xml、纯文本等)或其他数据库,如Server、Postgres、Oracle等。
根据我在页面上看到的内容,有连接到Oracle的https://gemtalksystems.com/products/gemconnect/。如何从其他数据库或文件中执行此操作?是否有任何通过ODBC连接的选项?是否有任何数据泵这样做,或你“只是”一个自己?
最后,我要问的是如何创建一个临时区域,在那里您可以清理、转换数据,然后将数据加载到GemStone DB中。是否有任何例子或文档是如何完成的?
发布于 2019-05-02 19:22:11
分期
我怀疑大多数环境将"ETL/staging“作为一个单独步骤的原因是,这两个端点有些僵化,没有一个很好的编程语言来处理数据。也就是说,如果您有TXT、CSV、XML、JSON或SQL,并且需要使用另一种格式/模式,那么必须有人进行“转换”。但是,如果您使用的是GemStone,那么您可以在Smalltalk中完成转换--不需要单独的步骤。
文件
如果您有文件(TXT、CSV、XML、JSON等),那么使用GsFile。事实上,如果另一个端点可以处理文件,那么只需以约定的格式从一个源导出,然后以另一个格式导入(使用GemStone进行“繁重的转换”)。文件更简单,避免了通信层,使调试变得简单(如果源没有创建该文件,那么它就是源的问题;如果它位于挂起的目录中,那么还没有处理它(目标问题);如果它位于已完成的目录中,则目标已经处理了它)。
使用这种方法,您可以在GemStone中启动(一个或多个)后台作业,查看目录,打开文件进行读取,处理文件,然后将其移动到另一个目录。除了基本的字符串操作之外,您只需要使用GsFile。然后在数据库中创建和更新对象。
ODBC
虽然可以从GemStone调用ODBC库(或者像使用GemConnect那样调用数据库的本机库),但这可能是不必要的复杂。相反,我会使用与外部系统有更好交互的工具创建另一个层。该层可以编写文本文件(如上文所述),也可以使用适当的接口直接与GemStone通信。我倾向于使用Dolphin提取数据(良好的ODBC支持),然后从Dolphin直接与GemStone通信。您可以对其他客户端Smalltalk方言(法老、VA或VW)进行类似的操作,甚至可以使用另一种语言(我有一个学生正在处理GemStone的Python接口)。
O/R映射
在这里,您仍然需要一种以一种格式获取数据并将其转换到另一种格式的方法。它们往往是高度特定于域的,我们发现编写Smalltalk代码就更容易了。或者,您可以使用类似GLORP在法老,弗吉尼亚州,大众等。
最佳实践
我认为您还没有在GemStone中找到任何ETL的“最佳实践”,因为我们并不认为它是一个外部过程或单独的步骤。如何与文件(GsFile)、套接字(GsSocket)、库(CLibrary)或客户端(GCI)进行通信。从这里我们可以看到内部处理问题,比如多生产者和一个消费者(RcQueue),或者一个生产者和多个消费者(锁紧)。
所以,并不是说GemStone应用程序不做ETL,而是在内部完成,而且情况更具体。
https://stackoverflow.com/questions/55948242
复制相似问题