ObjectQL
元数据驱动的数据引擎
业务数据的通用协议。ObjectQL 跨 SQL、NoSQL 和基于文件的系统(Postgres、Redis、MongoDB、Excel)抽象存储,具有统一的元数据驱动逻辑。定义一次 Schema,随处部署。无需迁移脚本,无供应商锁定。您的业务逻辑经得起下一个技术周期的考验。
您定义意图,我们编译优化后的 SQL。
了解 ObjectQL 如何将高级 Schema 转换为生产就绪的数据库代码。
# customer.objectql.yml
entity:
name: Customer
fields:
- name: company_name
type: text
required: true
- name: account_manager_id
type: reference
entity: User
- name: total_revenue
type: virtual
expression: |
SELECT SUM(amount)
FROM orders
WHERE orders.customer_id = customers.id-- Auto-generated optimized SQL
CREATE TABLE customers (
id INTEGER PRIMARY KEY,
company_name TEXT NOT NULL,
account_manager_id INTEGER REFERENCES users(id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Virtual column compiled to subquery
SELECT
c.*,
(SELECT SUM(amount) FROM orders o
WHERE o.customer_id = c.id) AS total_revenue
FROM customers c
WHERE c.account_manager_id = :current_user_id; -- RBAC injected为什么选择 ObjectQL?
编译时保证。零运行时开销。引擎强制安全。
零开销安全
RBAC 和 ACL 策略直接编译到 SQL WHERE 子句中。安全性由数据库引擎强制执行,而不是应用程序内存。没有中间件检查,没有遗忘的过滤器——只有无懈可击的数据隔离。
数据库无关
从开发中的本地 SQLite 切换到生产 PostgreSQL 或企业 TiDB,无需更改一行代码。基于协议的可移植性消除了供应商锁定,并赋予您议价能力。
虚拟列
在您的 Schema 中定义计算字段,这些字段编译为高效的数据库表达式。在数据库层计算聚合、连接和派生值——没有 N+1 查询,没有内存开销。
编译器 vs. ORM
ObjectQL 不仅仅是另一个 ORM 包装器。它是一个根本不同的架构。
接近于零。在构建时编译为原生 SQL。
高。在运行时转换查询,有性能损失。
引擎强制。RBAC 编译进 SQL WHERE 子句。
应用逻辑。如果开发者忘记过滤器,很容易被绕过。
基于协议。Schema 定义与数据库无关。
基于代码。绑定到特定的 ORM 库和模式。
编译为数据库表达式。高效聚合。
加载到应用内存中。N+1 查询问题。
任何数据源。一个 API。
连接到关系数据库、NoSQL 存储、缓存层,甚至电子表格。没有强制迁移——只需编写一个驱动程序。
PostgreSQL
生产级关系数据库。JSONB 优化,完全支持 CTE 和窗口函数。
MySQL
高并发关系数据库。支持 8.0+ 特性,针对 Web 规模工作负载进行了优化。
SQLite
本地优先就绪。非常适合嵌入式应用程序、边缘计算和零基础设施原型设计。
SQL Server
企业关系数据库。原生支持 T-SQL 特性和无缝 Azure SQL 集成。
Oracle Database
遗留企业系统。与 Oracle SQL 方言完全兼容,与现代技术栈统一。
MongoDB
文档数据库支持。Schema 到文档映射与聚合管道优化。
Excel/CSV 文件
将电子表格变成安全的 API。将营销团队的 Excel 表格挂载到您的交易数据库旁边。
用例
从个人项目到企业系统。
本地优先应用程序
构建完全在 SQLite 上运行的 CRM 系统、库存管理或分析仪表板。您的数据留在您的机器上,零基础设施成本。
企业集成
在异构遗留数据库之上创建统一的管理系统。使用相同的 ObjectQL 语法查询 Oracle、PostgreSQL 和 SQL Server。
多租户 SaaS
在数据库级别构建具有租户隔离的 SaaS 应用程序。ObjectQL 自动处理查询分区和数据安全。