机制完全指南:字段含义、上报流程与开启关闭方法)
数据库后端前端协作【免费下载链接】mathesarAn intuitive spreadsheet-like interface that lets users of all technical skill levels view, edit, query, and collaborate on Postgres data directly. 100% open source and self hosted, with native Postgres access control.项目地址https://gitcode.com/gh_mirrors/ma/mathesar点击查看免费下载本文围绕 Mathesar 的匿名使用数据收集Usage Data Collection功能展开讲解其 opt-in 原则、每 24 小时上报的全部数据字段及其统计口径、后台收集与上传的完整流程并给出通过安装向导、管理设置页、RPC 接口与 Web 页面查看/开关该功能的实战方法。读完本文你将能准确判断该功能是否符合自身部署场景并能在任何时间查看本实例生成的匿名报告、随时关闭数据上报。功能概述为什么需要匿名使用数据Mathesar 是一款基于 PostgreSQL 的开源数据库管理 Web 应用为了让用户对是否上报数据做出知情选择它内置了一套可选的opt-in匿名使用数据收集机制。开启后Mathesar 会在后台收集去标识化的使用统计信息并定期上报帮助开发团队了解功能使用情况、定位体验问题并改进稳定性和性能。该机制的核心原则非常清晰从 mathesar/analytics.py 的模块注释即可确认基本逻辑是只要存在installation_idAnalytics 即为开启状态可以且将会被收集否则不会收集。因此disable_analytics函数只是删除该 ID如果存在。也就是说收集行为完全由是否存在 Installation ID这一个开关决定不存在其他隐式上报路径。该 ID 是一个随机生成的 UUIDuuid4()与你的 Mathesar 安装实例一一对应不包含任何可识别个人身份的信息。每 24 小时上报的数据字段当实例处于开启状态时Mathesar 会每 24 小时生成并上报一份匿名报告。原文档docs/docs/user-guide/usage-data-collection.md列出的全部字段如下字段含义created_at报告创建时间的时间戳installation_id随机生成的 UUID唯一标识你的 Mathesar 安装mathesar_versionMathesar 版本号字符串例如0.2.0user_countMathesar 安装上的用户账户数量active_user_count最近 14 天内登录过 Mathesar 的用户数量sso_connected_user_count在 Mathesar 安装上配置了 SSO 的用户数量configured_role_count在 Mathesar 安装上配置的 PostgreSQL 角色数量connected_database_count已连接到 Mathesar 的数据库数量connected_database_schema_count连接到 Mathesar 的所有 schema 总数connected_database_table_count连接到 Mathesar 的所有表总数connected_database_record_count所有连接表中的记录总数近似值exploration_count在 Mathesar 中创建的 Explorations数据探索数量form_count在 Mathesar 中创建的 Forms表单数量public_form_count在 Mathesar 中公开发布的 Forms 数量注原文档中connected_database_record_count字段列在created_at之后但为便于理解上表按数据归属重新归类排序字段名与含义与原文档完全一致。字段的统计口径源码级说明每个字段并非凭空统计而是有明确的底层数据来源见 mathesar/analytics.py 中prepare_analytics_report()的实现mathesar_version取自mathesar.__version__user_count统计User.objects.filter(is_activeTrue)即激活状态的用户账户数active_user_count统计is_activeTrue且last_login在ACTIVE_USER_DAYS常量值为 14天内登录过的用户sso_connected_user_count统计allauth的SocialAccount中关联激活用户的数量对应 SSO 登录配置configured_role_count统计ConfiguredRole模型记录数数据库相关四个字段遍历所有Database对象逐个累加其object_countsschema 数、表数、记录数记录数是近似值若某个数据库无法取到统计信息如连接异常会打印警告并跳过不会中断整个报告生成exploration_count/form_count/public_form_count分别统计Explorations与Form模型记录数其中public_form_count仅统计publish_publicTrue的表单。这些字段对应数据库模型定义在 mathesar/models/analytics.py 中InstallationID与AnalyticsReportAnalyticsReport的所有统计字段均允许为空nullTrue, blankTrue并在迁移 0006_analyticsreport_sso_connected_user_count.py 中补充了sso_connected_user_count字段。收集与上报的完整工作流程触发机制非阻塞的后台线程Analytics 的收集由装饰器wire_analytics触发。它在每次 RPC 调用由 mathesar/rpc/decorators.py 的调用链注入时利用 Django 缓存设置一个 30 分钟有效的analytics_done标志并启动一个后台线程执行run_analytics()从而避免阻塞用户请求。这一非阻塞设计有专门测试验证test_non_blocking_wrapper见 mathesar/tests/test_analytics.py断言被装饰函数返回耗时远小于后台任务中的模拟耗时。24 小时间隔与上传清理后台线程run_analytics()的执行逻辑为检查是否存在InstallationID不存在则直接返回不收集任何数据检查当天是否已生成过报告ANALYTICS_FREQUENCY 1即每天至多保存一份报告满足条件后依次执行save_analytics_report()调用prepare_analytics_report()生成报告并落库upload_analytics_reports()将所有未上传uploadedFalse的报告批量 POST 到settings.MATHESAR_ANALYTICS_URL成功后批量标记uploadedTruedelete_stale_reports()清理过期报告——已上传且超过 2 天的报告以及无论上传状态如何、更新超过ANALYTICS_REPORT_MAX_AGE30 天的报告都会被删除。安装时的首次上报除了周期上报外Mathesar 在首次安装完成时还会发送一次性的安装确认安装向导表单中one_time_installation_confirmation复选框被勾选时调用upload_initial_report()向MATHESAR_INIT_REPORT_URL发送仅含mathesar_version的初始报告见 complete_installation.py。如何开启与关闭匿名数据收集方式一安装完成向导首次部署在首次部署 Mathesar 的Finish Setting Up Mathesar页面模板 complete_installation.html中有两个与数据相关的复选框Send a one-time confirmation to let us know youve installed Mathesar默认勾选仅发送一次安装确认Enable anonymous usage data collection启用匿名使用数据收集默认勾选勾选后在创建管理员用户时调用initialize_analytics()生成 Installation ID。表单处理逻辑位于 mathesar/views/installation/complete_installation.pyusage_stats为真时创建随机 UUID 作为 Installation ID并在异常时记录错误日志而不影响安装流程。方式二管理设置页面运行期随时调整运行中的实例可以在Admin Settings管理设置页面切换开关。前端实现见 mathesar_ui/src/pages/admin-settings/SettingsPage.svelte页面加载时调用 RPCanalytics.get_state获取当前状态勾选开关时调用analytics.initialize开启取消勾选时调用analytics.disable关闭操作成功会弹出提示Anonymous usage data collection enabled/disabled successfully。前端 RPC 封装定义在 mathesar_ui/src/api/rpc/analytics.ts共暴露get_state、initialize、disable、upload_feedback四个方法。方式三RPC 接口开发者/自动化方式Analytics 的全部 RPC 方法实现在 mathesar/rpc/analytics.py方法名与语义如下RPC 方法作用analytics.get_state返回当前状态{enabled: bool}analytics.initialize开启收集创建 Installation IDanalytics.disable关闭收集删除 Installation ID同时级联删除所有已保存的报告analytics.view_report查看一份示例报告与真实报告使用同一生成函数analytics.upload_feedback向 Mathesar 服务器上传一条反馈消息需登录其中disable的语义值得一提RPC 文档注明关闭目前等同于删除 Installation ID从而保证不可能再保存 Analytics 报告任何已保存的报告也会随 ID 删除而被级联清除on_deletemodels.CASCADE。查看实际生成的报告原文档docs/docs/user-guide/usage-data-collection.md提供了两种查看真实报告的方法方法一访问示例报告页面在运行中的 Mathesar 实例上访问路径/info/analytics_sample_report/该路径在 mathesar/urls.py 中注册路由名analytics_sample_report视图定义于 mathesar/views/init.py 的analytics_sample_report渲染模板 mathesar/templates/analytics/sample_report.html。该模板页面加载时通过前端脚本向/api/rpc/v0/发起analytics.view_reportRPC 调用将返回的 JSON 报告以格式化形式渲染在页面上方便管理员直观判断开启后会上报哪些数据。方法二直接调用 RPC可以调用 RPC 函数analytics.view_reportAPI 索引见 docs/docs/api/methods.md。该函数使用与真实报告完全相同的prepare_analytics_report()生成数据因此查看结果即代表实际会上报的内容。其返回值类型AnalyticsReport是 TypedDict包含上述全部统计字段installation_id、mathesar_version、user_count等见 mathesar/rpc/analytics.py。上报目的地与自定义配置报告与反馈消息最终通过 HTTP POST 发送到配置的 URL。相关设置定义在 config/settings/common_settings.py配置项环境变量默认值开发环境生产环境默认值MATHESAR_ANALYTICS_URLMATHESAR_ANALYTICS_URLhttps://example.com/collectorhttps://analytics.mathesar.dev/collect-analytics-reportsMATHESAR_INIT_REPORT_URLMATHESAR_INIT_REPORT_URLhttps://example.com/hellohttps://analytics.mathesar.dev/collect-initial-reportMATHESAR_FEEDBACK_URLMATHESAR_FEEDBACK_URLhttps://example.com/feedbackhttps://analytics.mathesar.dev/collect-feedback-message生产环境的真实上报地址见 config/settings/production.py。这些 URL 均支持通过同名环境变量覆盖自托管用户可以据此将数据重定向到自己的收集端点实现完全自控。隐私与安全边界从源码可以确认以下几点隐私边界纯匿名报告中唯一涉及实例身份的是随机生成的installation_idUUID不含用户名、邮箱、密码、数据库内容或任何个人数据可随时关闭关闭后 Installation ID 被删除且级联清除已保存报告系统不会再生成新报告后台线程因无 ID 直接返回统计信息不敏感所有字段均为数量级统计用户数、表数、记录数等其中记录数还是近似值异常隔离生成报告过程中某个数据库统计失败不会导致整个流程中断只会记录警告见prepare_analytics_report中的except Exception分支。测试与验证仓库自带的测试 mathesar/tests/test_analytics.py 覆盖了该机制的完整生命周期包括非阻塞后台包装器、initialize → save → disable全流程验证关闭后报告被清空、重复初始化 Installation ID 会触发唯一性约束异常IntegrityError以及上传后报告字段内容与批量标记uploadedTrue的准确性。如果你想深入验证行为可以基于该测试文件了解各字段的序列化格式与上传载荷结构。小结Mathesar 的匿名使用数据收集是一套设计透明、开关明确的机制以InstallationID的存在与否作为唯一开关每 24 小时通过后台线程生成并上报 14 项去标识化统计字段同时提供安装向导、管理设置页、RPC 接口三种开关方式以及示例报告页面和analytics.view_report两种查看方式。自托管用户既可以在部署时直接取消勾选也可以在运行期随时关闭或通过环境变量将上报端点指向自己的服务完全掌控数据去向。赞分享数据库后端前端协作【免费下载链接】mathesarAn intuitive spreadsheet-like interface that lets users of all technical skill levels view, edit, query, and collaborate on Postgres data directly. 100% open source and self hosted, with native Postgres access control.项目地址https://gitcode.com/gh_mirrors/ma/mathesar点击查看免费下载相关推荐JuiceFS 匿名用量上报Usage Tracking机制解析数据字段、上报原理与 --no-usage-report 关闭指南JuiceFS 匿名用量上报Usage Tracking机制解析数据字段、上报原理与 no usage report 关闭指南 JuiceFS 客户端默认云原生容器运行时Tabby 用量收集Usage Collection机制详解采集内容、上报原理与关闭方法Tabby 用量收集Usage Collection机制详解采集内容、上报原理与关闭方法 TabbySelf hosted AI coding assi人工智能大模型本地部署模型推理服务后端RAG交互助手Grafana Pyroscope 匿名使用统计上报收集内容、底层机制与关闭方法Grafana Pyroscope 匿名使用统计上报收集内容、底层机制与关闭方法 导读 Grafana Pyroscope 默认会向远程统计服务器上报匿名的可观测性性能剖析后端运维观测上一篇yuzu模拟器内存修改技术深度解析金手指功能实现原理与实践指南下一篇GitHubDesktop2Chinese5分钟极速汉化GitHub Desktop告别英文界面困扰创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考