精华内容
下载资源
问答
  • DBSync是一款数据库比较与同步工具,能比较出数据库之间的差异,能实时同步差异数据,从而使双方始终保持一致。用于系统间数据对接、数据分发、数据对比等。 ●支持各种数据源
  • DBSync是一款数据比较与同步工具,能比较出数据库之间的差异,能实时同步差异数据,从而使双方始终保持一致。用于系统间数据对接、数据分发、数据对比等。支持各种数据源既支持常规数据库,如Access、SQL Server、...
  • 干脆,自己动手开发了一款 DBSync 软件,用于各种数据库之间的比较与同步,且力求简单实用。 本 Chat 介绍 DBSync 的设计思想、技术要点及使用方法,披露其核心算法及性能指标,供 IT 技术人员借鉴参考。内容包括: ...

    在 IT 项目实施中,经常遇到系统对接及数据同步问题。网上找了些软件,往往很复杂,不方便客户使用;而现有的数据库系统,一般只支持同型数据库同步,不支持异型同步。干脆,自己动手开发了一款 DBSync 软件,用于各种数据库之间的比较与同步,且力求简单实用。

    本 Chat 介绍 DBSync 的设计思想、技术要点及使用方法,披露其核心算法及性能指标,供 IT 技术人员借鉴参考。内容包括:

    1. 开发背景;
    2. 设计思想;
    3. 功能及技术要点;
    4. 使用方法;
    5. 核心算法及提速措施;
    6. 性能测试报告。

    阅读全文: http://gitbook.cn/gitchat/activity/5c74f4ad8cf88b661b3cdd44

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 华创数据库比较与同步软件DBSync是一款数据比较与同步工具,能比较出数据库之间的差异,能实时同步差异数据,从而使双方始终保持一致。用于系统间数据对接、数据分发、数据对比等。 华创数据库比较与同步软件DBSync...
  • 1 、开发背景 ...我是做软件开发的,在项目实施过程中,经常遇到系统对接问题,需要将一个系统的数据同步到另一个系统,即需要做数据库同步。 搜遍了各大网络,未找到适合的解决方案。...

    1 、开发背景

    我是做软件开发的,在项目实施过程中,经常遇到系统对接问题,需要将一个系统的数据同步到另一个系统,即需要做数据库的同步。

    搜遍了各大网络,未找到适合的解决方案。现有的数据库系统,大多数只支持同型数据库之间的同步,不支持异型数据库同步,而现实中的数据库种类很多,相互间都可能需要同步;其它同步软件又太复杂,需要配置的东西太多,不适合交付给普通客户使用。

    干脆,自己动手开发了这款 DBSync 软件,用于各种数据库之间的比较与同步,且力求简单实用。

    2 、设计思想

    传统的数据库同步,一般使用快照 + 事务日志的工作模式。用大白话来说,就是先把源数据整个复制到目标库,使得双方具有相同的起点;再启动监测程序,随时监测源数据的变化,一旦有更新操作(即事务),就将事务传递至目标库,在目标库中实施同样的更新,从而使得双方保持一致。

    不同的数据库系统,事务日志的格式不同,按照这个模式设计的同步软件,只适用于同类型数据库的同步,如 SQL Server SQL Server Oracle Oracle 等。 DbSync 采取不同的同步策略,不再卷入具体的事务,而是直接访问事务的结果,即直接访问数据,通过扫描比较双方数据,找到相互间的差异,再将差异部分同步过去。按照这个模式, DbSync 就具有广泛的通用性,能用于各种数据库之间的同步。因为,无论什么样的数据库,也无论它怎么工作,最终的结果无非就是数据。

    3 、功能及技术要点

    3.1 使用 ADO.Net OleDbConnection 连接数据库,因此能连接各数据源,包括 Access SQL Server Oracle MySQL DB2 等常规数据库,也包括 Excel txt csv 等文件数据源。

    3.2 既支持相同类型数据库之间的同步,如 Access Access SQL Server SQL Server ,又支持异型数据库之间的同步,如 Excel Access Access SQL Server SQL Server Oracle 等。

    3.3 以任务为同步的基本单位,一个任务负责一对数据表之间的同步,多个数据表间的同步设置多个任务即可。

    3.4 任务采取线程的方式运行,可并发启动、执行多个线程,因此可并发执行多个同步任务。

    3.5 任务可设置为自动重复执行,只需预先设置好时间间隔,即可长期自动运行,从而实现无人值守同步。最短时间间隔可设置为 1 秒,几乎等同于实时同步。

    3.6 提供断点续传能力,当同步中断后,再次同步时能从中断位置继续同步,避免每次都从头开始。

    3.7 提供单独的数据比较功能,可对比两份数据,突出显示改动条目,修改情况一目了然。

    4 、使用方法

    4.1 主界面介绍

    打开软件后进入主界面,显示同步任务列表,如下图所示:

    1 DBSync 主界面

    说明:

    ●数据比较: Click 任务列表中的“○”按钮,可比较双方数据,突出显示改动条目。

    ●数据同步: Click 任务列表中的“ ”按钮,立即开始同步。

    ●执行状态:实时显示同步进度信息,包括:已扫描的记录数、已同步(增删改)的记录数等。

    ●开始时间、结束时间、下次开始时间:显示每个任务执行的时间信息。

    ●日志: Click 任务列表中的“查看”按钮,可查看该任务的操作历史、同步历史。

    ●设置: Click 任务列表中的“修改”按钮,可修改任务设置。

    4.2 同步任务设置

    软件预设了 3 个同步任务,用作示范。要同步自己的数据,您必须根据自己的需要设置任务,指定源数据表、目标数据表,以及同步方式、同步频度等。 Click 主界面上的“新增”按钮,即可新增一个同步任务,进入 Step1

    Step1 :选择源数据库、目标数据库

    首先要指定源数据库、目标数据库,如下图所示:

    2 DBSync 选择数据库

    说明:本界面的用途是设置源数据库及目标数据库的连接字符串,使得 DBSync 能连接双方数据库。其中,界面上打星号( * )的栏位是必填的。填写完成后,请 Click 标签 2 ,进入 Step2

    Step2 :选择源数据表、目标数据表

     

    3 DBSync 选择数据表

    说明:本界面的用途是选择源数据表及目标数据表。选择完成后,请 Click 标签 3 ,进入 Step3

    Step3 :选择字段对应关系

     

    4 DBSync 选择字段对应关系

    说明:本界面的用途是选择字段对应关系,即:源字段以及对应的目标字段。如果您需要做增量同步,这里必须选择主键字段。主键字段是记录的唯一标志,它用于判别同步双方是否存在对应记录。选择完成后,请 Click 标签 4 ,进入 Step4

    Step4 :选择同步方式及频度

     

    5 DBSync 同步方式及频度

    说明:本界面的用途是选择同步方式及频度。

    1 )同步方式:

    ●全部新增( Insert )至目标表:是指将源数据表中的数据全部 Insert 到目标数据表。

    ●仅同步增量数据:是指以主键字段为记录标识,查找相互间的差异,只同步差异部分(即增量部分),而相同部分不同步。

    2 )执行频度:

    ●手动点击“开始”执行:是指每次同步都由用户 Click 任务列表中的“ ”来执行。

    ●手动,然后自动重复执行:是指由用户 Click ”开始第一次执行,同步结束后,程序会按照预定时间间隔自动重复执行。只要程序不关闭,同步操作就会一直持续下去,从而实现无人值守同步。

    3 )同步范围:

    属于高级选项,可填写 Select * From...Where... 形式的 SQL 语句,每次同步前会执行,用于进一步限定参与同步的数据范围。

    4 )同步后处理:

    属于高级选项,可填写 Update SQL 语句,每次同步后会执行,用于数据回写、数据转换、公式计算等额外任务。

    4.3 数据比较界面

    设置好同步任务后, Click 任务列表中的“○”按钮,进入扫描与比较界面,如下图所示:

    6 DBSync 扫描与比较界面

    说明:本界面的用途是比较双方数据,找出数据差异(即增量)。该界面不实施同步,仅展示增量数据,其中的红色部分为已修改字段,移动鼠标过去能显示修改前的原值。

    5 、核心算法及提速措施

    数据库产品的一个重要指标就是速度,同步软件也不例外。同步一般分两个步骤:先快照或复制过去,再监测更新并同步更新。前者类似于文件复制,是最初的一次性的动作;后者是长期的随时要做的动作,因此,重点在于更新速度。

    传统同步软件通过事务日志进行更新,虽然不通用,但速度快,几乎是实时同步的效果; DBSync 使用扫描比较判断更新,虽然通用,但速度可能较慢。为此, DBSync 提供一种机制,使得每次同步仅扫描比较增量数据,从而大幅提速。

    为了深入理解提速原理,我们先了解一下扫描比较的核心算法:首先, DBSync 会读取双方的数据,并按主键字段排序;然后,以主键字段值为记录标识,依次比较双方的记录。对于源数据表存在而目标表不存在的记录,视作新增增量;对于目标数据表存在而源数据表不存在的记录,视作删除增量;对于源数据表与目标数据表均存在的记录,则继续比较其它字段,其它字段有差异的,视作修改增量;无差异的,则为相同数据。

    一般来说,同步是定期重复执行的,两次同步间的增量非常有限,绝大部分是未变化的相同数据。比如,一个记录数为百万级的数据表,如果每 5 秒同步一次, 5 秒内的增量是很少的,通常也就几十条记录,与百万级总量相比几乎是忽略不计的。因此,简单的全表扫描比较会浪费大量时间,提速思路就是排除相同数据的无意义比较,仅扫描比较增量数据。具体措施:

    5.1 在源数据库中创建一个表,用于记录每次同步的完成时间,例如:表名 DBSync ,含一个字段 SyncDate ,其中的 SyncDate 初始化为一个很小的值,如: 1900-1-1

    5.2 对于新增、修改增量,单独用一个任务来执行,并在 Step4 设置回写 SQL ,向源数据库写入同步完成时间,如: UPDATE DBSync set SyncDate=getdate() ;再限定源数据范围,如: SELECT a.* FROM Customer AS a, DBSync AS b where a.CreateTime>=b.SyncDate or a.UpdateTime>=b.SyncDate 。如下图所示:

    7 DBSync 限定扫描范围

    这样,第一次同步会全表扫描比较,以后同步就根据 SyncDate 仅提取增量数据,扫描比较的数量就大幅减少,速度自然也大幅提升。

    利用此方案,需要注意的是,源数据表必须有 CreateTime UpdateTime 字段,分别记有数据的新增时间、修改时间。

    5.3 对于删除增量,用另一个任务来执行。由于该任务只比较双方的主键,不比较其它字段,即使不限定数据范围,速度也很快。

    6 、性能测试报告

    测试环境:最普通的电脑,双核 CPU E7500 ,主频 2.75G ,内存 2G

    数据库情况:源数据库、目标数据库均为 SQL Server ,位于同一台电脑上;源数据表、目标数据表均为 Customer 表,均含 10 个字段、 100 万条数据;源数据表含有增、删、改数据各 100 条,共 300 条增量。

    任务设置情况:按照上述提速策略,安排 2 个任务来进行,任务 4 用于同步源数据库中的新增、修改增量,任务 5 用于同步删除增量。

    任务执行结果:截图如下:

    8 DBSync 速度测试

    说明:对于新增、修改增量的同步, 4 秒钟完成;对于删除增量的同步, 6 秒钟完成。

     

    结论: DBSync 的优点是支持各种数据库,简单易用。缺点是速度稍慢,记录数为百万级的数据库同步,一般需要数秒钟才能完成;千万级的,约 1 分钟才能完成;亿级的,约数分钟才能完成。另外, DBSync 只同步数据,不同步索引、触发器、存储过程等其它设置。

     


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30235376/viewspace-2638127/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/30235376/viewspace-2638127/

    展开全文
  • 业务需求,需要A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:...

      业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://www.cnblogs.com/chenyanbin/p/11291752.html

      如果做数据同步呢?上面我们已经通过DBLink与SQL Server建立连接了,那么我们就可以获取A公司表中的数据。在通过Oracle Job定时任务,具体JOB还有那些功能,这里不做详细介绍了,百度上一大堆,这里我们只讲解Oracle Job创建步骤。

      我们已经知道job是一个定时任务,也就是说可以在一个规定的时间内,执行某一项任务,这个任务就是“存储过程”。

    第一步:先创建存储过程(做一个简单DEMO往一张表插入当前时间)

     1 create or replace procedure proc_add_test as
     2 begin
     3   insert into test values (to_char(sysdate, 'yyyy-mm-dd hh:mi'));/*向测试表插入数据*/
     4   commit; /*提交*/
     5 end;
     6 
     7 
     8 create or replace procedure 存储过程名称 as
     9 begin
    10   /*业务逻辑片段*/
    11 end;

    第二步:创建Oracle Job定时任务,实现每隔多长时间调用存储过程

     1 declare
     2   job number;  /*job:定时器名称*/
     3 BEGIN
     4   DBMS_JOB.SUBMIT(  
     5         JOB => job,  /*自动生成JOB_ID*/  
     6         WHAT => 'proc_add_test;',  /*需要执行的存储过程名称或SQL语句*/  
     7         NEXT_DATE => sysdate+3/(24*60),  /*初次执行时间-下一个3分钟*/  
     8         INTERVAL => 'trunc(sysdate,''mi'')+1/(24*60)' /*每隔1分钟执行一次*/
     9       );  
    10   commit;
    11 end;

    搞定,到目前为止,一个简单的Oracle Job已经创建好了,

    job基本用法!!!

     1、查询job信息

    1 SELECT * FROM user_jobs;

    字段介绍

     2、停止Oracle Job任务

     1 begin
     2 dbms_job.broken(4, true, sysdate);
     3 commit;
     4 end;
     5 
     6 
     7 
     8 语法:
     9 begin
    10 dbms_job.broken(任务的唯一标识符, true, sysdate);
    11 commit;
    12 end;

    3、启用Oracle Job任务

    1 begin
    2 dbms_job.run(4);
    3 end;
    4 
    5 语法:
    6 begin
    7 dbms_job.run(任务的唯一标识符);
    8 end;

    4、删除定时器

     1 begin
     2   dbms_job.remove(4);
     3   commit;
     4 end;
     5 
     6 
     7 begin
     8   dbms_job.remove(任务的唯一标识符); 
     9   commit;
    10 end;

    5、INTERVAL参数常用值示例

     1 每天午夜12点            ''TRUNC(SYSDATE + 1)''     
     2 每天早上8点30分         ''TRUNC(SYSDATE + 1) + (8*60+30)/(24*60)''     
     3 每星期二中午12点         ''NEXT_DAY(TRUNC(SYSDATE ), ''''TUESDAY'''' ) + 12/24''     
     4 每个月第一天的午夜12点    ''TRUNC(LAST_DAY(SYSDATE ) + 1)''     
     5 每个季度最后一天的晚上11点 ''TRUNC(ADD_MONTHS(SYSDATE + 2/24, 3 ), ''Q'' ) -1/24''     
     6 每星期六和日早上6点10分    ''TRUNC(LEAST(NEXT_DAY(SYSDATE, ''''SATURDAY"), NEXT_DAY(SYSDATE, "SUNDAY"))) + (6×60+10)/(24×60)''    
     7 每3秒钟执行一次             'sysdate+3/(24*60*60)'   
     8 每2分钟执行一次           'sysdate+2/(24*60)'   
     9   
    10 1:每分钟执行  
    11 Interval => TRUNC(sysdate,'mi') + 1/ (24*60) --每分钟执行  
    12 interval => 'sysdate+1/(24*60)'  --每分钟执行  
    13 interval => 'sysdate+1'    --每天  
    14 interval => 'sysdate+1/24'   --每小时  
    15 interval => 'sysdate+2/24*60' --每2分钟  
    16 interval => 'sysdate+30/24*60*60'  --每30秒  
    17 2:每天定时执行  
    18 Interval => TRUNC(sysdate+1)  --每天凌晨0点执行  
    19 Interval => TRUNC(sysdate+1)+1/24  --每天凌晨1点执行  
    20 Interval => TRUNC(SYSDATE+1)+(8*60+30)/(24*60)  --每天早上8点30分执行  
    21 3:每周定时执行  
    22 Interval => TRUNC(next_day(sysdate,'星期一'))+1/24  --每周一凌晨1点执行  
    23 Interval => TRUNC(next_day(sysdate,1))+2/24  --每周一凌晨2点执行  
    24 4:每月定时执行  
    25 Interval =>TTRUNC(LAST_DAY(SYSDATE)+1)  --每月1日凌晨0点执行  
    26 Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24  --每月1日凌晨1点执行  
    27 5:每季度定时执行  
    28 Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'q')  --每季度的第一天凌晨0点执行  
    29 Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'q') + 1/24  --每季度的第一天凌晨1点执行  
    30 Interval => TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),'q')-1/24  --每季度的最后一天的晚上11点执行  
    31 6:每半年定时执行  
    32 Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24  --每年7月1日和1月1日凌晨1点  
    33 7:每年定时执行  
    34 Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24  --每年1月1日凌晨1点执行  

    转载于:https://www.cnblogs.com/chenyanbin/p/11356933.html

    展开全文
  • 基于PySpark的网络服务异常检测系统 (四) MysqlSparkSQL对接同步数据 kmeans算法计算预测异常 基于Django Restframework和Spark的异常检测系统,数据库为MySQL、Redis, 消息队列为Celery,分析...

    基于PySpark的网络服务异常检测系统 (四) Mysql与SparkSQL对接同步数据 kmeans算法计算预测异常

    基于Django Restframework和Spark的异常检测系统,数据库为MySQL、Redis, 消息队列为Celery,分析服务为Spark SQL和Spark Mllib,使用kmeans和随机森林算法对网络服务数据进行分析;数据分为全量数据和正常数据,每天通过自动跑定时job从全量数据中导入正常数据供算法做模型训练。

    使用celery批量导入(指定时间段)正常样本到数据库

    def add_normal_cat_data(data):
        """
        构建数据model  用yield每次返回1000条数据
        :param data
        :return:
        """
        tmp_cat_normal_models = []
    
        for cat_data in data:
            response_time = cat_data.get('response_time')
            request_count = cat_data.get('request_count') or 1
            fail_count = cat_data.get('fail_count') or 1
            cat_data['id'] = str(uuid4())
            if response_time < 1.2 and (fail_count / request_count) < 0.2:
                cat_obj = CatNormalResource(
                    **cat_data
                )
                tmp_cat_normal_models.append(cat_obj)
    
            if len(tmp_cat_normal_models) >= 1000:
                yield tmp_cat_normal_models
                tmp_cat_normal_models = []
    
        yield tmp_cat_normal_models
    
    
    @celery_app.task
    def insert_normal_cat_data(data):
        """
        使用异步,每次用bulk 批量插入 1000条数据
        :param data:
        :return:
        """
        try:
            for i in add_normal_cat_data(data):
                CatNormalResource.objects.bulk_create(i)
        except Exception as e:
            print(e)
            raise RsError('插入数据库失败')

    通过contab定时job,每天自动导入正常样本

     1 def get_current_timestamp():
     2     """
     3     获取当前时间戳
     4     :return:
     5     """
     6     return int(time.time()) * 1000
     7 
     8 
     9 def convert_datetime_to_timestamp(dtime):
    10     """
    11     把datetime转换为时间戳
    12     :param datetime:
    13     :return:
    14     """
    15     timestamp = time.mktime(dtime.timetuple())
    16     return int(timestamp) * 1000
    17 
    18 
    19 def get_cache_cat_data(start_time, end_time, force=False):
    20     """
    21     获取指定时间段的cat数据
    22     :param start_time:
    23     :param end_time:
    24     :return:
    25     """
    26     key = 'GET_CAT_RES_DATA_{0}_TO_{1}'.format(
    27         start_time, end_time
    28     )
    29     content = cache.get(key)
    30     if force or not content:
    31         content = get_cat_res_data(start_time, end_time)
    32         if content:
    33             cache.set(key, content, timeout=CACHE_TIMEOUT_DEFAULT)
    34 
    35     return content
    36 
    37 
    38 def add_normal_cat_data(data):
    39     """
    40     构建数据model  用yield每次返回1000条数据
    41     :param data
    42     :return:
    43     """
    44     tmp_cat_normal_models = []
    45 
    46     for cat_data in data:
    47         response_time = cat_data.get('response_time')
    48         request_count = cat_data.get('request_count') or 1
    49         fail_count = cat_data.get('fail_count') or 1
    50         cat_data['id'] = str(uuid4())
    51         if response_time < 1.2 and (fail_count / request_count) < 0.2:
    52             cat_obj = CatNormalResource(
    53                 **cat_data
    54             )
    55             tmp_cat_normal_models.append(cat_obj)
    56 
    57         if len(tmp_cat_normal_models) >= 1000:
    58             yield tmp_cat_normal_models
    59             tmp_cat_normal_models = []
    60 
    61     yield tmp_cat_normal_models
    62 
    63 
    64 @celery_app.task
    65 def insert_normal_cat_data(data):
    66     """
    67     使用异步,每次用bulk 批量插入 1000条数据
    68     :param data:
    69     :return:
    70     """
    71     try:
    72         for i in add_normal_cat_data(data):
    73             CatNormalResource.objects.bulk_create(i)
    74     except Exception as e:
    75         print(e)
    76         raise RsError('插入数据库失败')
    77 
    78 
    79 def insert_normal_cat_job():
    80     """
    81     定时导入前一天的正常数据
    82     :return:
    83     """
    84     logger.info('insert_normal_cat_job  ....')
    85     dt_time = datetime.datetime.now() + datetime.timedelta(days=-1)
    86     start_time = convert_datetime_to_timestamp(dt_time)
    87     end_time = get_current_timestamp()
    88     data = get_cache_cat_data(start_time, end_time)
    89     insert_normal_cat_data.delay(data)

    SparkSQL读取指定时间段数据,使用Kmeans预测新数据异常

     1 class SparkAnomaly(object):
     2     def __init__(self, appid, start_time, end_time):
     3         self.appid = appid
     4         self.start_time = start_time
     5         self.end_time = end_time
     6         self.spark_sql = SparkSql()
     7         self.cat_res = self.spark_sql.load_table_dataframe('cat_resource')
     8         self.cat_normal_res = self.spark_sql.load_table_dataframe(
     9             'cat_normal_resource'
    10         )
    11         self.filter_str = "appid = {0} " \
    12                           "and create_time >= {1} " \
    13                           "and update_time <= {2}".format(
    14             self.appid, self.start_time, self.end_time,
    15         )
    16         self.model_filter_str = "appid = {0}".format(self.appid)
    17 
    18     def get_kmeans_model(self):
    19         """
    20         得到kmeans聚类模型
    21         :return:
    22         """
    23         df = self.cat_normal_res.filter(self.model_filter_str)
    24         parsed_data_rdd = df.rdd.map(lambda x: array([x[4], x[5], x[6]]))
    25 
    26         # 建立聚类模型
    27         clusters = KMeans.train(
    28             parsed_data_rdd, 3,
    29             maxIterations=10,
    30             initializationMode="random"
    31         )
    32 
    33         return clusters
    34 
    35     def get_kmeans_predict(self):
    36         """
    37         获取appid指定时间段的预测结果
    38         :return:
    39         """
    40         df = self.cat_res.filter(self.filter_str)
    41         parsed_data_rdd = df.rdd.map(lambda x: array([x[4], x[5], x[6]]))
    42         clusters = self.get_kmeans_model()
    43         predict_result = clusters.predict(parsed_data_rdd)
    44         return predict_result.collect()
    45 
    46 
    47 def get_kmeans_result(appid, start_time, end_time):
    48     """
    49     获取appid指定时间段的cat数据
    50     :param appid:
    51     :param start_time:
    52     :param end_time:
    53     :return:
    54     """
    55     cat_result_obj = CatResultData.objects.filter(
    56         appid=appid,
    57         start_time=start_time,
    58         end_time=end_time,
    59         algorithm_name="kmeans"
    60     ).first()
    61     if not cat_result_obj:
    62         arg_result = SparkAnomaly(appid, start_time, end_time)
    63         content = arg_result.get_kmeans_predict()
    64         cat_result_obj = CatResultData.objects.create(
    65             appid=appid,
    66             start_time=start_time,
    67             end_time=end_time,
    68             algorithm_name="kmeans",
    69             result_data=content
    70         )
    71     ser_data = CatResultDataSerializer(cat_result_obj).data
    72     ser_data['result_data'] = json.loads(ser_data['result_data'])
    73     return ser_data

    以上代码为系统的部分代码,详细代码请见我的github  https://github.com/a342058040/network_anomaly_detection

    posted @ 2018-10-17 17:26 Harvard_Fly 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • DBSync是一款数据比较与同步工具,能比较出数据库之间的差异,能实时同步差异数据,从而使双方数据保持一致。用于系统间数据对接、数据分发、数据对比等。 DBSync数据比较与同步
  • 但是在前端对接之后,发现频繁地打开和关闭连接会对性能造成很大的影响,而且之前假设的情况是接受的请求都是同步的,但是前端可能发送异步请求,当两个请求同时到达时,甚至会导致数据库故障。基于以上原因,就...
  • 为您提供DBSync 数据比较与同步工具下载,DBSync是华创软件推出的一款数据比较与同步工具,能比较出数据库之间的差异,能实时同步差异数据,从而使双方数据保持一致,用于系统间数据对接、数据分发、数据对比等。...
  • 日志数据采集分析对接 课程描述 通过日志服务采集用户、数据库、业务等访问数据。演示对于业务日志分析处理,程序日志查询监控,打通日志数据仓库对接案例。 日志种类 网站访问日志 准备步骤 & 依赖 ...
  • 数据规模超大,数据时效性高,可节约千倍IO,可对接外部数据源Oracle、Mysql、Kafka、Hive、Hbase、File、HDFS File等,可以接口层Hive SQL、JDBC、WebService直接进行交互;同时支持跨集群数据同步,支持多种不同...
  • 数据对接-ETL之StreamSet学习之旅六

    千次阅读 热门讨论 2019-03-06 11:09:38
    StreamSet作为大数据ETL工具的选择,当然需要处理数据的合并转存,这里介绍针对mysql数据库同步转存,采用mysql的binary Log方式进行。 学习系列 数据对接-ETL之StreamSet学习之旅一 数据对接-ETL之Stream...
  • 主动待办事项列表服务器 高主动性的todo清单的服务器源代码 介绍 “高主动性的要做清单”参考当前市场上流行的一些任务清单的优点,并... 运河服务器是阿里巴巴开源的Mysql的数据库日志获取解析服务, 管的客户端是
  • 简介: 安装步骤简单说明: 1、上传源码导入数据库 2、打开data/config....管理设置里面对接填写公众号的appidAppSecret. 详见程序内文档! 网盘下载地址: http://kekewangLuo.net/gj67sHBj8NH0 图片: ...
  • 价格设置完成了,我去删除缓存,左边菜单的《代理商管理》-《批量同步产品》《全选》-《更新数据》,大概等待五分钟,网站首页就可以看到价格了! 伪静态规则 Nginx Rewrite: if (!-d $request_filename){ set...
  • DataXDataX web入门

    2020-07-21 11:29:41
    DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 设计理念 为了解决异构数据源同步问题,DataX将...
  • DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 为了解决异构数据源同步问题,DataX将复杂的网状...
  • 整理这个原因很简单,最近做数据采集遇到有N多MYSQL数据库需要采集、同步,原有对接系统单一库、REST等形式的采集实现起来略显麻烦。考虑到是内部系统,且采集、同步时间一般在晚上,故而打算开个先例,抛弃之前的...
  • 今日进度 俞鋆: 和前端对接,完成了注册接口的对接写了一部分数据同步接口。 李嘉群: 完成了注册界面服务器的对接 ...完成短信验证码的实现,实现用户界面和数据库对接 张岳: 登陆接口完成 林炜鸿: 按...
  • 今年年初遇到一个对接ERPWMS的项目,只做后端数据同步,不进行页面展示,简而言之就是我们接收ERP http请求传送过来的数据然后转存到自己的数据库并将数据同步到WMS系统的数据库中,(ps:我也比较奇怪为什么不...
  • 2、设备对接 第54页 【案例4.2.1】 第54页 3、其他 第55页 【案例4.3.1】 第55页 五、版本控制问题 第58页 1、新老代码中同一全局变量不一致 第58页 【案例5.1.1】 第58页 六、可测试性代码问题 第59页 1、调试信息/...
  • 2018.5.28 ~ 6.3 周进度表

    2019-10-07 03:24:47
    完成 任务 计划完成时间 实际完成时间 还剩时间/天 数据库组 ...查找数据库同步相关资料 ...UI小组二继续对接 周日 周日 0 1 完成富文本编辑器 周一到周六 周六 0 1 添加测试 周四 周四 0 UI小组二...

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

数据库对接与同步