efcore icon indicating copy to clipboard operation
efcore copied to clipboard

EF Core database provider for Azure Cosmos DB

Open ajcvickers opened this issue 1 year ago • 0 comments

This is a grouping of related issues. Feel free to vote (👍) for this issue to indicate that this is an area that you think we should spend time on, but consider also voting for individual issues for things you consider especially important.


EF9

The following work is a roughly prioritized list of work tentatively planned for the EF9 release. More details of the full scope of Cosmos work over several releases can be found in All work section below.

Important: This plan is not a commitment; it will evolve as we continue to learn throughout the release. Some things not currently planned for EF9 may get pulled in. Some things currently planned for EF9 may get punted out.

The general approach for Cosmos in EF9 is:

  • Necessary infrastructure/test work
  • Bring the query pipeline up-to-date with relational
  • As much as possible in parallel, implement high-value enhancements
    • Bring complex types support close to relational level
    • Small config items, like RBAC
    • High-value smaller query items
  • Depending on how this work goes, stretch goals are:
    • Better use of partition keys (Will do if query is in good shape in time.)
    • Partial updates and CUD batching

Completed

  • #32563
  • #19814
  • #4179
  • #32197
  • #28186
  • #28265
  • #33535
  • #33881
  • #24202
  • #29177
  • #24513
  • #33783 (possibly to be released out-of-band as a plugin, before 9.0)
  • Query fundamentals
    • #33032
    • #25364
    • #16926
    • #33032
    • #33905
    • #25701
    • #25700
    • #29497
    • #16146
    • #20441
    • #33858
    • #33797
    • #33894
  • Function translations
    • #17722
    • #33904
    • #25250
  • Infra/internal work
    • #32647
    • #31063
    • #33898
    • #34092

Planned

  • #12878 (Medium) (Assigned to @ajcvickers)
  • #26239 (Small) (Assigned to @ajcvickers)
  • #25548 (Medium) (Assigned to @ajcvickers)
  • #20350 (Small) (Assigned to @roji)
  • #17318 (Medium) (Assigned to @roji; overlap with #20350)
  • #20693 (Medium) (Assigned to @roji)
  • #33893 (Small) (Assigned to @ajcvickers)
  • #34026 (Assigned to @roji)
  • #34027 (Assigned to @roji)
  • #34067 (Assigned to @roji)
  • #34068 (Assigned to @ajcvickers)

Stretch

  • #33968 (Assigned to @roji). Currently mostly blocked, requires Cosmos consultation.
  • #31253 (X-Large) (Assigned to @ajcvickers)
    • There is a lot of scope here; some of it will be heavily query dependent. We're unlikely to do it all.
  • #13559 (Large?)
  • #17308 (Large?)
  • #24087
  • #33854

T-shirt sizes are:

  • Small: Days or less
  • Medium: Days to a couple of weeks
  • Large: Several weeks
  • X-Large: Many weeks

All work

These are areas either fundamental to the underlying architecture and implementation, and/or fundamental user experiences that users expect, on one side, from any EF Core provider, and on the other side by any mechanism used to access Cosmos. For example, SelectMany is a fundamental query pattern that should work on any EF Core provider. Similarly, partition keys are fundamental to working with Cosmos, and hence EF must expose/provide this functionality.

Query fundamentals

At the time of writing (beginning of EF9 work), the Cosmos query pipeline code has fallen behind the relational code by a considerable about. The architecture now employed by relational providers must be ported to Cosmos before any other major changes are made to the query pipeline.

  • #33032 (X-Large)

Following this, some fundamental improvements are needed to the query pipeline. Many of these areas have model building, change tracking, update pipeline aspects as well, but they involve a lot of query work.

  • #20350 (Medium)
    • #24087
    • #24202 (Large)
  • #17722 (Small)
  • #24513 (Medium)
  • Collections of primitive, complex, and entity types. (Large?)
    • #25701
    • #25700
    • #16926
  • #31063

--- EF9 cut line ---

  • #17313 (X-Large?)
  • #17312 (Medium?)
  • #17957 (Medium?)
  • #16146 (Medium?)
  • #24571 (Small?)
  • #33854
  • #16926

Non-query fundamentals

Many of these areas have query aspects, but much of the work can be done independently of query.

  • #31253 (X-Large)
  • #32197 (Small)
  • #28186 (Small)
  • #13559 (Large?)
  • #17308 (Large?)
  • #26239 (Small)
  • #25548 (Small)

--- EF9 cut line ---

  • #30743 (Large)
  • #17303 (Small)
  • #23729 (Medium)
  • #26981 (Medium)
  • #17309 (Small)
  • #33034 (Medium)
  • #26478 (Medium)
  • #28580 (Small)
  • #33201

Higher-level experiences

--- EF9 cut line ---

  • Model versioning and evolution:
    • #23753
    • #11099
    • #20584 (Likely dependency for this work.)
    • #21006 (Another likely dependency for this work.)
  • #30290
  • #33727

Other work

Query enhancements

--- EF9 cut line ---

  • #16920
  • #27440
  • #23523
  • #32626
  • #26662
  • #17314
  • #17746
  • #20910
  • #26547
  • #29177
  • #31063
  • #33796
  • #33779

Query optimizations

  • #17318 (Large)
  • #20693 (Large)

--- EF9 cut line ---

  • #12635
  • #13159
  • #17297
  • #20268
  • #33783

Bugs

--- EF9 cut line ---

  • #13168
  • #16142
  • #20677
  • #25527 (What does the SDK do?)
  • #25886
  • #29286
  • #31696
  • #32021
  • #26378
  • #33687
  • #33328

Nice-to-have

--- EF9 cut line ---

  • #13317
  • #15338
  • #17305
  • #17315
  • #17317
  • #17321
  • #17670
  • #19944
  • #22374
  • #23203
  • #23501
  • #23690
  • #24313
  • #25526
  • #26378
  • #26824
  • #26885
  • #28018
  • #29497
  • #32517
  • #16924
  • #33652
  • #33909

Testing and internal quality

  • #12878

--- EF9 cut line ---

  • #16707
  • #17246
  • #17316
  • #17333
  • #19973
  • #33189
  • #21348
  • #23538
  • #25120
  • #26558
  • #27688
  • #14546

Currently blocked/infeasible

--- EF9 cut line ---

  • #14570
  • #17306
  • #17319
  • #18753
  • #25363

ajcvickers avatar Feb 08 '24 17:02 ajcvickers