Skip to content

Investigating the work needed for Datastore to SQL migration #8652

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
isoos opened this issue Mar 19, 2025 · 1 comment
Open

Investigating the work needed for Datastore to SQL migration #8652

isoos opened this issue Mar 19, 2025 · 1 comment

Comments

@isoos
Copy link
Collaborator

isoos commented Mar 19, 2025

No description provided.

@isoos
Copy link
Collaborator Author

isoos commented Mar 19, 2025

By running the app/test tests, I've collected the entity types and attached the types that they were together in the write or delete part of a transaction.

AuditLogRecord
AuditLogRecord:Consent
AuditLogRecord:OutgoingEmail,Package
AuditLogRecord:OutgoingEmail,Package,PackageVersion,PackageVersionAsset,PackageVersionInfo
AuditLogRecord:OutgoingEmail,Package,PackageVersion,PackageVersionAsset,PackageVersionInfo,ReservedPackage
AuditLogRecord:Package
AuditLogRecord:Package,PackageVersion
AuditLogRecord:Publisher
AuditLogRecord:Publisher,PublisherMember
Consent
Consent:AuditLogRecord
Consent:OutgoingEmail
DownloadCounts
GlobalLockState
Like:Package,User
Like:User
ModeratedPackage
ModeratedPackage:Package
ModerationCase
ModerationCase:Package
ModerationCase:Package,PackageVersion
ModerationCase:Publisher
ModerationCase:User
NeatTaskStatus
OAuthUserID:User
OutgoingEmail
OutgoingEmail:AuditLogRecord,Package
OutgoingEmail:AuditLogRecord,Package,PackageVersion,PackageVersionAsset,PackageVersionInfo
OutgoingEmail:AuditLogRecord,Package,PackageVersion,PackageVersionAsset,PackageVersionInfo,ReservedPackage
OutgoingEmail:Consent
Package
Package:AuditLogRecord
Package:AuditLogRecord,OutgoingEmail
Package:AuditLogRecord,OutgoingEmail,PackageVersion,PackageVersionAsset,PackageVersionInfo
Package:AuditLogRecord,OutgoingEmail,PackageVersion,PackageVersionAsset,PackageVersionInfo,ReservedPackage
Package:AuditLogRecord,PackageVersion
Package:Like,User
Package:ModeratedPackage
Package:ModerationCase
Package:ModerationCase,PackageVersion
Package:PackageVersion
Package:PackageVersion,PackageVersionAsset,PackageVersionInfo
Package:SecurityAdvisory
PackageState
PackageVersion:AuditLogRecord,OutgoingEmail,Package,PackageVersionAsset,PackageVersionInfo
PackageVersion:AuditLogRecord,OutgoingEmail,Package,PackageVersionAsset,PackageVersionInfo,ReservedPackage
PackageVersion:AuditLogRecord,Package
PackageVersion:ModerationCase,Package
PackageVersion:Package
PackageVersion:Package,PackageVersionAsset,PackageVersionInfo
PackageVersionAsset
PackageVersionAsset:AuditLogRecord,OutgoingEmail,Package,PackageVersion,PackageVersionInfo
PackageVersionAsset:AuditLogRecord,OutgoingEmail,Package,PackageVersion,PackageVersionInfo,ReservedPackage
PackageVersionAsset:Package,PackageVersion,PackageVersionInfo
PackageVersionInfo
PackageVersionInfo:AuditLogRecord,OutgoingEmail,Package,PackageVersion,PackageVersionAsset
PackageVersionInfo:AuditLogRecord,OutgoingEmail,Package,PackageVersion,PackageVersionAsset,ReservedPackage
PackageVersionInfo:Package,PackageVersion,PackageVersionAsset
Publisher
Publisher:AuditLogRecord
Publisher:AuditLogRecord,PublisherMember
Publisher:ModerationCase
Publisher:PublisherMember
PublisherMember:AuditLogRecord,Publisher
PublisherMember:Publisher
ReservedPackage
ReservedPackage:AuditLogRecord,OutgoingEmail,Package,PackageVersion,PackageVersionAsset,PackageVersionInfo
SecurityAdvisory
SecurityAdvisory:Package
User
User:Like
User:Like,Package
User:ModerationCase
User:OAuthUserID
UserSession

The following types are used standalone or almost standalone:

  • DownloadCounts
  • GlobalLockState
  • NeatTaskStatus
  • OAuthUserID (only used as an index to User.oauthUserId)
  • PackageState
  • UserSession

The following types are probably fine to be stored in two places independently, with some kind of fallback when reading/listing them:

  • AuditLogRecord
  • Consent
  • OutgoingEmail
  • Like
  • ModerationCase
  • ReservedPackage
  • SecurityAdvisory

The rest could be migrated in two groups:

  • publisher-related entities
  • package-related entities

Maybe we could decouple some of them ahead of time, e.g. ModeratedPackage, ReservedPackage, SecurityAdvisory or PackageVersionInfo could be checked if we could rewrite it in a way that they wouldn't be coupled in transactions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant