eorm icon indicating copy to clipboard operation
eorm copied to clipboard

简单 ORM 框架

Results 9 eorm issues
Sort by recently updated
recently updated
newest added

**仅限中文** 1. [x] #164 2. [x] #189

epic

**仅限中文** ## ShardingSelector - [x] #143 - [x] #148 - [x] #196 ## ShardingInserter - [x] #194 - [x] #205 ## ShardingUpdater - [x] #201 ## ShardingDeleter - [x] #202

epic

## 场景分析 虽然在一些大厂中,往往修改一个业务表的字段都要走复杂的流程,但是在绝大多数中小公司是没有如此复杂的流程了,所以为了开发者能绕开复杂的建表语句与修改表的语句,方便直接构建 object 和 数据库 table 的映射,大多数 orm 框架 提供给了使用者 Migrate 的功能。 数据库 Migrate 一直是数据库运维人员最为头痛的问题,如果仅仅是一张表增删字段还比较容易,那如果涉及到外键等复杂的关联关系,数据库的 Migrate 就会变得非常困难。 ## 需求分析 实现一个 Migrator 通常涉及以下步骤: 1. 确定迁移工具的功能和需求:首先,需要明确迁移工具的目标和功能。这包括确定支持的数据库类型、需要执行的迁移操作(创建表、添加列、修改列、删除列等)以及迁移操作的顺序和依赖关系。 2. 连接到目标数据库:使用数据库驱动程序,建立与目标数据库的连接。根据选择的工具,您可能需要提供数据库的连接字符串、认证信息和其他配置参数。 3. 实现迁移操作:根据数据库迁移的需求,编写相应的迁移操作。这涉及使用领域特定语言(DSL)或API来描述迁移操作。例如,创建表可以通过定义表的结构和约束来进行,添加列可以指定列名、数据类型和约束等。 4....

feature
设计文档

我的思路是这样的:我们会将数据存在两个地方,treemap和heap中。treemap保存排序列相同的所有数据行做部分去重。整体流程是这样的,首先初始化先从sql.Rows取数据放入heap中。然后需要将最小的那个排序列的所有数据行拿出来放入treemap做去重。我们在next的时候去treemap中拿数据,如果treemap中的数据被拿光了,就再从heap中取值

**仅限中文** milestone v0.0.3 - [x] #140 在这里稍微讨论了一下结果集处理的意义,和可行的 API 设计。 - [x] #141 - [x] #142 - 这两个 issue 展示了在结果集处理上的基本设计方案:专款专用,无侵入式。即我们倾向于为不同的场景提供不同的实现,而不是在一个实现里面兼容不同的情况。 - [x] #165 澄清了在实现结果集上应该做到一个什么地步。 - [x] #179 - [x] #190 在聚合函数处理中,我们验证了...

epic

**仅限中文** ### 使用场景 1. 去除重复数据 SELECT DISTINCT country FROM users; 2. 与聚合函数结合 SELECT COUNT(DISTINCT country)FROM users 3. 多个列去重 SELECT DISTINCT order_id,customer_id from orders; 本issue先不讨论和聚合函数结合的情况。 ### 可行方案 > 如果你有设计思路或者解决方案,请在这里提供。你可以提供多个方案,并且给出自己的选择 - 如果后面没有携带orderby子句,需要像之前处理group...

feature

**仅限中文** ## 背景 在结果集处理的相关问题下 #182 ,我们能够看到一个问题,即查询特征会直接决定了后续结果集如何处理。实际上,如果单纯站在分库分表的角度,那么不仅仅是结果集处理,连目标 SQL 生成都会收到查询特征的影响。比如说在计算 AVG(age) 的时候,生成的目标 SQL 就不是直接 SELECT AVG(age) 而是 SELECT COUNT and SUM。 于是我们就面临一个问题,如何提取并且表达这些查询特征?如果只考虑目前已知的几个情况: - 是否使用聚合函数,具体的聚合函数,以及聚合函数有没有附加 DISTINCT 关键字。 - 是否有 HAVING - 是否有 GROUP...

feature

**仅限中文** 1. [x] #157 2. [ ] #168 3. [x] #167

epic

**仅限中文** # 背景 在最开始的时候,我们支持了 EQ 这种写法,AND 和 OR,并且在 #167 里面提及支持 NOT 写法。现在我们要进一步考虑剩余的操作符: - 比较操作符:>=, >, 1000 AND user_id < 10`:那么先单一一个条件考察 user_id > 1000 会命中所有的表;user_id < 10 则只会命中全部集群上的部分库(db_[0,9])和部分表。那么根据 AND 的运算规则进行求交集,最终会选择第二个条件的所有的表。但是我们手动分析就知道,这个查询条件是查询不到任何数据的。 那么有些分库分表会引入一些SQL优化,就能一定程度上解决这种问题。...

feature