OData – OData vs GraphQL

GraphQL 很火, 很厉害, 但是它和 OData 有本质的区别. 所以并不是说任何一样对比另一个绝对的好.

GraphQL is not OData

twitter 的讨论

 

有几个点是我能 Get 的到的.

OData = SQL in URL

OData was a way to serialize a SQL statement into a URL (OData 就像 SQL 语句的 URL 版本)

it challenging to limit the exposure 要限制 client side 的 query 能力是很困难的.

 

OData Standardized

OData 的规范是它的优势, 就好比 RPC 对 RESTful一样. RESTful 有规范, 容易理解, 但是不容易表达万物. RPC 则可以表达万物, 但又太没有规范了.

 

Flaws in OData

OData 通常和 database schema 邦的比较紧 (所以说它像 SQL Query), 一旦 schema 换了, 但又想维护旧的版本会比较难.

OData 偏向统一管理, 很难对特殊案例做优化.

 

最好的描述

OData 像 SQL Query, GraphQL 像 stored procedure. 你慢慢品.

所以这 2 者一定是共存的, 而且是互相补助的. 

 

总结

OData 像 SQL Query, GraphQL 像 stored procedure.

OData 像 RESTful, GraphQL 像 RPC

当你希望简单统一的时候, 你会觉得 RESTFul 很棒, SQL Query 就够用了, OData 很好.

但当你遇到特别情况, 没办法用简单的方式的时候, RPC, stored procedure, GraphQL 就凸显它的魅力了. 

我们看双方的使用场景. OData 倾向于企业应用的 API, SAP 这类. 通常是比较简单的, 关系数据库 pattern.

GraphQL 则是互联网应用, 公开的 API,  whatever 类型数据形式的 (比如 NoSQL)

所以总结 GraphQL 比 OData 可以表达更多 (更自由), OData 比 GraphQL 有规则 (更约束)

到底是哪一个, 还是对外 GraphQL, 对内用 OData, 真的是看项目用了才知道呢.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章