2 điểm bởi GN⁺ 2024-08-29 | 1 bình luận | Chia sẻ qua WhatsApp
  • ChartDB là trình chỉnh sửa sơ đồ DB giúp nhanh chóng trực quan hóa schema cơ sở dữ liệu và xử lý dưới dạng sơ đồ ER, tập trung vào cộng tác nhóm và các tác vụ migration schema
  • Bản Cloud hoạt động trên trình duyệt và nhấn mạnh rằng có thể có sơ đồ trong vòng 15 giây mà không cần truy cập cơ sở dữ liệu
  • Bản Self-Hosted được cung cấp dưới dạng mã nguồn mở miễn phí, phù hợp với nhu cầu bảo mật và tùy chỉnh khi cần tự kiểm soát dữ liệu và cấu hình
  • Hỗ trợ nhập schema dựa trên một truy vấn duy nhất, tạo sơ đồ ER bằng AI, xuất SQL DDL, tự động đồng bộ, cộng tác thời gian thực, tài liệu nhúng và theo dõi thay đổi
  • Có thể dùng cho thiết kế trên nhiều RDBMS và kho dữ liệu đám mây như PostgreSQL, MySQL, SQL Server, SQLite, MariaDB, ClickHouse, CockroachDB, Oracle, Snowflake, BigQuery

Sơ đồ schema DB xử lý ngay trên trình duyệt

  • ChartDB là công cụ trực quan hóa tức thì schema cơ sở dữ liệu và tạo sơ đồ ER
  • Được giới thiệu là trình chỉnh sửa sơ đồ DB dùng cho cộng tác nhóm và migration schema
  • Nút bắt đầu dẫn đến ứng dụng ChartDB, kèm thông điệp bắt đầu miễn phí và không cần thẻ tín dụng
  • Trên GitHub, ChartDB được hiển thị với +19K stars

Lựa chọn Cloud và Self-Hosted

  • ChartDB Cloud là cách trực quan hóa cơ sở dữ liệu trên trình duyệt
    • Được giới thiệu là phù hợp với tính dễ sử dụng và khả năng truy cập của nhóm
    • Hiển thị rằng có thể sử dụng mà không cần truy cập cơ sở dữ liệu
    • Nhấn mạnh có thể có sơ đồ trong vòng 15 giây
  • Self-Hosted là trình chỉnh sửa thiết kế cơ sở dữ liệu mã nguồn mở miễn phí
    • Có thể kiểm soát hoàn toàn dữ liệu và cấu hình
    • Là lựa chọn phù hợp cho môi trường cần bảo mật và tùy chỉnh
  • ChartDB mô tả rằng có thể trực quan hóa DB bằng “một truy vấn duy nhất”

Quy trình làm việc Import → Edit → Export

  • Instant Import

    • Cung cấp một truy vấn duy nhất để nhập toàn bộ schema cho từng cơ sở dữ liệu
    • Hướng dẫn rằng có thể nhập schema trong vòng 15 giây
  • Relational DBMS

    • Nêu MySQL, MariaDB, PostgreSQL, Microsoft SQL Server, SQLite là các DBMS phổ biến và hiển thị là đối tượng được hỗ trợ
  • Export SQL

    • Có thể tải sơ đồ xuống dưới dạng script SQL DDL để chạy trên cơ sở dữ liệu
    • Cũng có thể xuất thành hình ảnh để đưa vào tài liệu
  • Examples

    • Cung cấp ví dụ được thiết kế sẵn để thiết lập nhanh và tham khảo thiết kế
    • Mục này được hiển thị là WIP
  • Advanced Query Editor

    • Cung cấp các chức năng hoàn tác, làm lại, sao chép, dán và nhân bản
    • Có thể thêm bảng, vùng chủ đề và ghi chú
  • Beautiful Shares

    • Có thể tạo bản xem trước trực quan của sơ đồ cơ sở dữ liệu để chia sẻ với người khác

Tính năng tạo, chia sẻ và đồng bộ sơ đồ

  • ChartDB - AI Agent
    • Chuyển đổi ý tưởng cơ sở dữ liệu nhập vào prompt thành sơ đồ ER tối ưu có thể chỉnh sửa
  • Instant Import
    • Tính năng nhập toàn bộ schema DB bằng một truy vấn duy nhất
  • Export SQL
    • Tạo script DDL theo SQL dialect mong muốn
  • Sync Database
    • Tự động đồng bộ cơ sở dữ liệu live với sơ đồ
  • Real time collaboration
    • Có thể mời thành viên nhóm xem và chỉnh sửa sơ đồ theo thời gian thực
  • Amazing Docs
    • Tạo sơ đồ có thể nhúng và tài liệu mở rộng có thể tùy chỉnh
  • Keep on track
    • Theo dõi diff và lịch sử phiên bản của các thay đổi schema

Cơ sở dữ liệu được hỗ trợ

  • ChartDB cho biết hỗ trợ thiết kế cho cơ sở dữ liệu và kho dữ liệu đám mây
  • Các mục được hiển thị là được hỗ trợ như sau
    • PostgreSQL
    • MySQL
    • SQL Server
    • SQLite
    • MariaDB
    • ClickHouse
    • CockroachDB
    • Oracle
    • Snowflake
    • BigQuery

Các câu hỏi vận hành có thể kiểm tra trong FAQ

  • Có câu hỏi về việc ChartDB có sửa đổi cơ sở dữ liệu hay không
  • Có mục hỏi liệu có thể nhúng ERD live vào Notion, Miro, Confluence hay không
  • Có mục xác nhận liệu có thể dùng thử miễn phí gói ChartDB Cloud hay không
  • Cách nhận hỗ trợ, cách đồng bộ sơ đồ với cơ sở dữ liệu, cũng như việc có cung cấp hóa đơn và thanh toán doanh nghiệp hay không cũng được đưa vào các mục FAQ

1 bình luận

 
GN⁺ 2024-08-29
Ý kiến trên Hacker News
  • Tôi thường thấy các nhóm dự án lao vào phát triển ứng dụng mới mà không có một sơ đồ cơ bản nào để mô tả bất kỳ khía cạnh nào của giải pháp, kể cả mô hình dữ liệu
    Không rõ cần gì để một sơ đồ ER đơn giản trở thành tiêu chuẩn trong tài liệu dự án. Công cụ liên quan thì rất nhiều, nhưng ngoài thực tế hầu như không được dùng
    Có lẽ muốn mọi người dùng thì Microsoft phải đưa nó vào như một tính năng của Excel hoặc PowerPoint. Sơ đồ không cần hoàn hảo, chỉ cần truyền đạt được cấu trúc và các quan hệ cốt lõi phù hợp với ngữ cảnh. Nếu cần, có thể tạo nhiều sơ đồ nhỏ cho cùng một cơ sở dữ liệu để ghi lại yêu cầu và thiết kế

    • Tôi nghĩ ra vài lý do. Những người có nền tảng hệ thống thông tin quản lý (MIS) thường quan tâm đến cơ sở dữ liệu nhiều hơn so với người nền tảng khoa học máy tính (CS), và có xu hướng bắt đầu từ ERD rồi sau đó mới chuyển sang code. Phía CS thì thường muốn code trước
      Ngoài ra UML gần như là một thảm họa. Từ sau thập niên 90, nó trở thành thứ đại diện cho ngôn ngữ sơ đồ, nhưng lại không có thành phần cơ sở dữ liệu, nên phải gò sơ đồ lớp để dùng như ERD. UML không phải là code, và việc lập trình bằng UML cũng khó hoặc gần như không thể. Với ERD thì việc chuyển qua lại giữa code và sơ đồ dễ hơn nhiều, nhưng với các kiểu lập trình khác thì không như vậy
      Tôi cho rằng sự trỗi dậy rồi thất bại của UML đã góp phần lớn khiến lập trình viên không vẽ sơ đồ nữa. Hơn nữa, với đa số lập trình viên, công cụ duyệt code hiển thị cấu trúc code dạng cây ở panel bên trái của trình soạn thảo code là đã đủ
    • Tôi đồng ý vì tôi thuộc nhóm bắt đầu tìm hiểu hệ thống từ dữ liệu, nhưng có cảm giác chúng ta không phải số đông. Ít nhất trong hệ sinh thái Microsoft, cá nhân tôi không mấy vui khi cách tiếp cận code-first ngày càng lớn mạnh
  • Trước đây tôi khá ủng hộ việc lập ERD, và thường dùng nó như bài tập onboarding ngay cả với các cơ sở dữ liệu có hơn 100 bảng. Nhưng ERD toàn diện đang ngày càng hiếm, và tôi nghĩ như vậy cũng ổn
    Chi phí bảo trì cao nên giá trị không kéo dài. Có một ERD được trau chuốt kỹ thì tốt, nhưng không bắt buộc
    Khi tạo ERD bằng code, các công cụ như dbdiagram.io hay eraser.io được dùng khá nhiều. ERWin có thể xem là ông tổ của các sơ đồ UML/ERD, nhưng đắt

    • Làm những thứ này bằng tay gần như là một sai lầm. Như đã nói, vì chúng khó bảo trì. Tôi nghĩ mọi cơ sở dữ liệu đều nên tự động tạo sơ đồ, hoặc ít nhất có công cụ để tự động tạo
  • Tôi tò mò vì sao mọi người dùng các công cụ kiểu này. Dùng để nói chuyện với quản lý à?
    Tôi hỏi thật lòng. Có lẽ tôi cũng nên dùng, nhưng vẫn chưa hiểu vì sao cần

    • Khi độ phức tạp đạt đến mức đủ có ý nghĩa thì nên dùng. Nếu dự án đã trưởng thành đến mức bạn không còn, hoặc không muốn, giữ toàn bộ mô hình cơ sở dữ liệu trong đầu thì nên dùng
      Cũng cần khi có nhiều mô hình ở các hệ thống khác nhau, hoặc khi làm việc với người khác và muốn giao tiếp về mô hình cơ sở dữ liệu dễ hơn, hoặc cần giải thích công khai, hoặc muốn lên kế hoạch mô hình trước
      Ở đây nói nên dùng là nói đến sơ đồ cuối cùng, chứ không nhất thiết là công cụ cụ thể này
    • Tôi từng dùng những công cụ như vậy để sắp xếp thiết kế đang có trong đầu. Cá nhân tôi thích DBML, vì dễ đưa vào quản lý mã nguồn và cũng có plugin cho trình soạn thảo
      https://dbml.dbdiagram.io/home/
    • Vì “một bức hình đáng giá hơn ngàn lời nói”
      Nếu từng tiếp nhận một dự án có 80 bảng mà không có tài liệu, hoặc may lắm chỉ có một tài liệu 50 trang chứa dump schema cơ sở dữ liệu, bạn sẽ hiểu
      Có thể vẽ các bảng và quan hệ cốt lõi trong một ERD (sơ đồ thực thể–quan hệ) duy nhất, và hiểu được trong vài phút thay vì mất hàng giờ hay hàng ngày như với dump schema
      Ở giai đoạn thiết kế schema, có thể dùng nhiều trình chỉnh sửa ERD hoặc các công cụ sơ đồ dựa trên văn bản như PlantUML, MermaidJS, DBML, và cũng có thể đưa nguồn của sơ đồ vào quản lý mã nguồn
      Ngoài ra, nếu CI tạo ERD chi tiết cho schema cơ sở dữ liệu hiện tại để xem xét định kỳ, ta có thể kiểm tra xem nó có khớp với thiết kế ban đầu không, và liệu mình có đang hiểu đúng schema hiện tại không
    • Việc giao tiếp với phía nghiệp vụ và giải thích ràng buộc kỹ thuật hay yêu cầu dữ liệu trở nên dễ hơn nhiều. Nó cũng hữu ích khi thiết kế cộng tác trong các dự án phức tạp, và làm rõ nơi nào chúng ta chưa đáp ứng được yêu cầu dữ liệu
    • Tương tự tài liệu hóa kiểu JavaDoc, nó cung cấp một góc nhìn cô đọng hơn về cách thứ gì đó hoạt động
      Tôi thật sự ghét thái độ “code tự giải thích rồi mà!”
  • Tôi thấy có nhiều dịch vụ tương tự. Nhưng thứ tôi tìm là một công cụ có thể tự dùng trực tiếp hoặc điều khiển bằng script
    Trường hợp sử dụng của tôi là tạo sơ đồ cơ sở dữ liệu tương đối đơn giản từ mô tả mô hình mà tôi có như một phần của quy trình khác. Trong cấu trúc bộ nhớ có tên bảng, tên cột, quan hệ, và tôi muốn vẽ một sơ đồ kiểu ER
    Hiện tại tôi đang xem cách tạo file puml từ dữ liệu của mình rồi chạy PlantUML để tạo png hoặc svg
    Tìm thử thì đa số là công cụ thiết kế cơ sở dữ liệu hoàn chỉnh có trình chỉnh sửa riêng nhưng không có API, còn các công cụ như cái này hay dbdiagram.io thường chỉ dùng online nên không phải lựa chọn cho tôi. Nếu có gợi ý thì tôi rất biết ơn

    • Không biết bạn đã thử SchemaSpy chưa
  • Ước gì thứ này đã có khi tôi bắt đầu dự án 5 năm trước. Tôi phải thiết kế schema cơ sở dữ liệu cho một dự án full-stack dùng Postgres, và làm việc cùng một chuyên gia trong lĩnh vực khoa học
    Việc cùng xem lại sơ đồ rất hữu ích, vì chuyên gia đó có thể phát hiện các vấn đề do những yêu cầu đặc thù miền có thể phát sinh trong tương lai
    Trong quá trình đó tôi có rất nhiều buổi họp 1:1, vừa nhìn sơ đồ vừa ghi lại những gì cần thay đổi trước buổi họp tiếp theo
    Nếu có công cụ như thế này, chúng tôi đã có thể chỉnh sửa ngay trong cuộc họp và giảm được rất nhiều vòng lặp. Cũng có những thứ như pgAdmin, nhưng trông không thân thiện với người không chuyên kỹ thuật; công cụ này có vẻ có thể giảm bớt ma sát

  • Hay đấy, nhưng vấn đề chính của các công cụ kiểu này là chúng một chiều và cố tự biến mình thành nguồn thẩm quyền trung tâm. Nhưng đây là hình vẽ, không phải cơ sở dữ liệu
    Tôi hiểu vì sao mọi người dùng, nhưng tôi không cần công cụ như vậy
    Vì thế mọi công cụ đều cung cấp “xuất ra SQL” rồi kỳ vọng mọi thay đổi trong cơ sở dữ liệu được phản ánh vào sơ đồ. Nhưng sơ đồ không phải là cơ sở dữ liệu, nên giờ công việc bị nhân đôi

    • Câu “sơ đồ không phải là cơ sở dữ liệu” cũng giống như “bản đồ không phải là lãnh thổ”
      Sơ đồ là mô hình, và mô hình luôn tồn tại, dù được thể hiện rõ ràng hay chỉ nằm trong đầu
      Mô hình trong đầu có thể sai, nhưng không ai nhìn thấy nên không thể chỉ ra lỗi. Kể cả chính bản thân mình
  • DBeaver cũng hỗ trợ ERD: https://dbeaver.com/docs/dbeaver/ER-Diagrams/
    Nó có tính tương tác và có thể chỉnh sửa. Khó gọi là “đẹp”, nhưng toàn bộ sản phẩm là FOSS và cực kỳ hữu ích cho công việc với cơ sở dữ liệu

    • Tôi gặp khá nhiều vấn đề để khiến ERD trong DBeaver hoạt động như mong muốn. Với người như tôi thì ổn, vì cứ mày mò đến khi được là được
      Nhưng với một số người tôi từng làm việc cùng thì không. Thường khi cần những thứ này là lúc cộng tác thiết kế với những người không quen SQL nhưng có kiến thức miền, và họ mang đến các bảng tính Excel gần bằng một cơ sở dữ liệu nhỏ
  • Không hiểu sao một landing page tĩnh mà cuộn lại giật đến vậy