debezium mysql connector DDL 분석

debeziummysql ddl 문법 해석기를 실현하여 ddl 문장을 해석하는 데 사용한다.debezium는 최근에 해석기를 최적화하고 mysql 문법 해석기를 교체한다.왜 debezium mysql connector가 필요합니까?
필요한 이유 ddl parserDdlParserdebeizum mysql connector2가 있는데 각각 reader와 증량 구독에 사용된다.그것들의 내부는 모두 사용되었다snapshot는 해석기의 중요성을 충분히 설명했다.
  • ddl parser를 시작할 때 모든 테이블의 테이블 문구를 가져오고 SnapshotReader로 모든 테이블 문구를 해석한다.
  • DdlParserBinlogReader를 감청하고 ddl가 발생하면 ddl로 해석한다.
  • DdlParser가 없으면 DdlParser 감청표의 최신 dbz을 얻을 수 없고 필드 형식을 얻을 수 없습니다.만약 우리가 최신 필드 형식을 얻을 수 없다면 schema 이상dbz2를 통해 얻은 데이터를 정확한 reader 형식으로 변환할 수 없고 업무 측도 데이터를 정상적으로 처리할 수 없습니다.
    상술한 record 장면은 모두 reader 방법을 사용하고 이 방법은 내부에서 MysqlSchema.applyDdl 방법을 사용한다.DdlParser.parse에 대응하는 해석기는 mysql인데 다시 썼다MysqlDdlParser 방법
    @Override
    protected void parseNextStatement(Marker marker) {
        if (tokens.matches(DdlTokenizer.COMMENT)) {
            parseComment(marker);
        } else if (tokens.matches("CREATE")) {
            parseCreate(marker);
        } else if (tokens.matches("ALTER")) {
            parseAlter(marker);
        } else if (tokens.matches("DROP")) {
            parseDrop(marker);
        } else if (tokens.matches("RENAME")) {
            parseRename(marker);
        } else if (tokens.matches("USE")) {
            parseUse(marker);
        } else if (tokens.matches("SET")) {
            parseSet(marker);
        } else if (tokens.matches("INSERT")) {
            consumeStatement();
        } else if (tokens.matches("DELETE")) {
            consumeStatement();
        } else {
            parseUnknownStatement(marker);
        }
    }
    

    이 방법은 서로 다른 문장에 대해 parseNextStatement 각각 처리하였다.물론 어떻게 처리하든지 간에 마지막 목적은 MysqlDdlParser 유지보수된 테이블 구조와 데이터베이스의 테이블 구조가 일치하도록 하는 것이다(예를 들어 필드 유형).
    왜 표의 구조가 일치해야 합니까?debeziumdebezium 데이터를 얻었을 때 데이터와 대응하는 기록(mysql을 만들고 그 내용은 이번 줄 변경 데이터이다.
    줄 데이터는 여러 개의 열로 구성되어 있으며, 각각의 열은 자신의 필드 형식을 가지고 있으며, record 얻은 기록과 줄 형식은 형식 변환이 필요합니다.기록은 debezium 유지보수된 표 구조 필드 유형에 따라 정확한 유형 전환을 진행한다.구체적인 유형 전환기는 모두 debezium 클래스에 열거되어 있다.
    정확한 필드 유형은 MySqlValueConverters 유지보수된 표 구조와 debezium 표 구조가 일치해야 한다.이것이 바로 왜 mysql해석기, 해석ddl문법이 필요한가 하는 것이다.

    좋은 웹페이지 즐겨찾기