[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-liquibase-kakie-formaty-changelog-podderzhivaet-liquibase":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},951,"kakie-formaty-changelog-podderzhivaet-liquibase",29,"liquibase","Liquibase","💧","Какие форматы changelog поддерживает Liquibase?","Liquibase поддерживает четыре формата описания changelog: XML, YAML, JSON и SQL.\n\n### XML\n\nСамый распространённый и документированный формат. Поддерживает XSD-валидацию.\n\n\u003Cdetails>\u003Csummary>Пример XML changelog\u003C\u002Fsummary>\n\n```xml\n\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\u003CdatabaseChangeLog\n    xmlns=\"http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\"\n    xmlns:xsi=\"http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance\"\n    xsi:schemaLocation=\"http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\n        http:\u002F\u002Fwww.liquibase.org\u002Fxml\u002Fns\u002Fdbchangelog\u002Fdbchangelog-latest.xsd\">\n\n    \u003CchangeSet id=\"1\" author=\"petrov\">\n        \u003CcreateTable tableName=\"accounts\">\n            \u003Ccolumn name=\"id\" type=\"BIGINT\" autoIncrement=\"true\">\n                \u003Cconstraints primaryKey=\"true\"\u002F>\n            \u003C\u002Fcolumn>\n            \u003Ccolumn name=\"balance\" type=\"DECIMAL(19,2)\"\u002F>\n        \u003C\u002FcreateTable>\n    \u003C\u002FchangeSet>\n\n\u003C\u002FdatabaseChangeLog>\n```\n\n\u003C\u002Fdetails>\n\n### YAML\n\nБолее компактный и читаемый формат.\n\n\u003Cdetails>\u003Csummary>Пример YAML changelog\u003C\u002Fsummary>\n\n```yaml\ndatabaseChangeLog:\n  - changeSet:\n      id: 1\n      author: petrov\n      changes:\n        - createTable:\n            tableName: accounts\n            columns:\n              - column:\n                  name: id\n                  type: BIGINT\n                  autoIncrement: true\n                  constraints:\n                    primaryKey: true\n              - column:\n                  name: balance\n                  type: DECIMAL(19,2)\n```\n\n\u003C\u002Fdetails>\n\n### JSON\n\nАльтернативный формат, используется реже.\n\n\u003Cdetails>\u003Csummary>Пример JSON changelog\u003C\u002Fsummary>\n\n```json\n{\n  \"databaseChangeLog\": [\n    {\n      \"changeSet\": {\n        \"id\": \"1\",\n        \"author\": \"petrov\",\n        \"changes\": [\n          {\n            \"createTable\": {\n              \"tableName\": \"accounts\",\n              \"columns\": [\n                {\n                  \"column\": {\n                    \"name\": \"id\",\n                    \"type\": \"BIGINT\",\n                    \"autoIncrement\": true,\n                    \"constraints\": { \"primaryKey\": true }\n                  }\n                }\n              ]\n            }\n          }\n        ]\n      }\n    }\n  ]\n}\n```\n\n\u003C\u002Fdetails>\n\n### SQL\n\nДля тех, кто предпочитает писать чистый SQL. Метаданные указываются в комментариях.\n\n```sql\n--liquibase formatted sql\n\n--changeset petrov:1\nCREATE TABLE accounts (\n    id BIGINT AUTO_INCREMENT PRIMARY KEY,\n    balance DECIMAL(19,2)\n);\n--rollback DROP TABLE accounts;\n```\n\nНа практике в банковских проектах чаще всего используют **XML** (как наиболее формализованный и поддающийся валидации) или **YAML** (за компактность).\n\n> **На собеседовании:** достаточно перечислить четыре формата и знать, что XML — самый распространённый. Частая ошибка — не упомянуть SQL-формат, хотя именно его часто комбинируют с XML в реальных проектах.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Какие форматы changelog поддерживает Liquibase? — Gymterview","Liquibase поддерживает четыре формата описания changelog: XML, YAML, JSON и SQL.",[7,13],true]