求大神赐教!!!.net实现分布式Oracle查询

柠檬片-味道 2014-10-16 10:30:37
基于.net+oracle开发,想把一个集中式Oracle转变成分布式Oracle,提高系统的效率;首先通过数据分片,然后分配到各个站点的Oracle上,把这个物理部署成功后,然后编写组件实现全透明的sql语句查询与更新;现在问题是由于变成分布式Oracle后,sql语句就需要分析表是在哪个分片与哪个站点上,然后把sql语句分解了,到各站点去执行然后把结果合并返回给应用层。换句话说,由于数据量比较大,想把集中式查询变成分布式查询。对各站点查询出的结果进行合并,我就用c#语言分析sql语句里的单词,外连接的属性关联起来进行合并,编起来很麻烦,大家有什么方法吗?跪求!!!
...全文
179 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2014-10-17
  • 打赏
  • 举报
回复
如今内存这么廉价的时代,索引查询真不应该分布式。
柠檬片-味道 2014-10-17
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
[quote=引用 楼主 u010816844 的回复:] 对各站点查询出的结果进行合并,我就用c#语言分析sql语句里的单词,外连接的属性关联起来进行合并,编起来很麻烦,大家有什么方法吗?跪求!!!
假设 string[] hosts 中保存服务器列表,string sql保存查询语句,你的单个查询方法接口这样定义
DataTable Query(string host, string sql)
{
    ......
}
那么并行查询语句就可以这样写:
var results = (from x in hosts.AsParallel()
                select Query(x, sql)).ToList();
这样得到的是 List<DataTable> 集合,你可以使用 DataTable 自身的合并功能进行合并。[/quote] 才刚接触.net3个月,对datatable合并这一块不熟悉,我试试看能不能实现
柠檬片-味道 2014-10-17
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
如果分片其实并不容易控制,那么可以先不考虑分片,就是并行查询即可。
由于每张表的数据量有上百万条,项目确定需要分片,某些属性是常用属性,希望通过垂直分片达到这个需求。我是这样做的,在集中式站点1上执行create table slice1(attribute1,attribute2,....) as select attribute1,attribute2,.... from table1;来垂直分片。然后在站点2执行create table slice1 as (select * from slice1@站点1_link),把分片slice1分配给站点2,我通过编写代码可以实现建立分片并分配到站点上,但不知道这样编好不好?
  • 打赏
  • 举报
回复
如果查询时强类型的
List<....> Query(string host, string sql)
那么你可以使用 Aggregate 和 Union 运算将 results 中的 List<....> 集合合并。
  • 打赏
  • 举报
回复
引用 楼主 u010816844 的回复:
对各站点查询出的结果进行合并,我就用c#语言分析sql语句里的单词,外连接的属性关联起来进行合并,编起来很麻烦,大家有什么方法吗?跪求!!!
假设 string[] hosts 中保存服务器列表,string sql保存查询语句,你的单个查询方法接口这样定义
DataTable Query(string host, string sql)
{
    ......
}
那么并行查询语句就可以这样写:
var results = (from x in hosts.AsParallel()
                select Query(x, sql)).ToList();
这样得到的是 List<DataTable> 集合,你可以使用 DataTable 自身的合并功能进行合并。
  • 打赏
  • 举报
回复
如果分片其实并不容易控制,那么可以先不考虑分片,就是并行查询即可。

8,833

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 组件/控件开发
社区管理员
  • 组件/控件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧