|
| 1 | +# Refactor Communities |
| 2 | + |
| 3 | +These communities represent join activity based on your workload, your users. It is a beginning but there are areas for improvement. This is an exercise in defining plausible bounded contexts for microservice development. Before analyzing the communities found for the StudentFaculty Workload, lets briefly touch on what a `Pluggable Database PDB` is |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +Oracle Database 23ai is a [Container Database](https://www.oracle.com/database/container-database/) which supports many instances of a [Pluggable Database](https://docs.oracle.com/en-us/iaas/base-database/doc/pluggable-databases.html) |
| 8 | + |
| 9 | +In a microservices architecture, a pluggable database can be scoped to a Services Bounded Context. For example, the Supplier service, Customer Service and Order Service. |
| 10 | + |
| 11 | +Or, in this case, the bounded contexts found through comminity detection. |
| 12 | + |
| 13 | +## Communities Found |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +There are 6 unique communities |
| 18 | + |
| 19 | +### Blue Community |
| 20 | +- Colleges |
| 21 | +- Departments |
| 22 | +- Majors |
| 23 | +- StudentMajors |
| 24 | + |
| 25 | +### Brown Community |
| 26 | +- Faculty |
| 27 | +- FacultyCourses |
| 28 | +- Courses |
| 29 | +- StudentCourses |
| 30 | +- Students |
| 31 | + |
| 32 | +### Pink Community |
| 33 | +- Addresses |
| 34 | +- Transcripts |
| 35 | +- StudentFinances |
| 36 | + |
| 37 | +### Red Community |
| 38 | +- Staff |
| 39 | +- Roles |
| 40 | +- Employee Benefits |
| 41 | + |
| 42 | +### Green Community |
| 43 | +- Publications |
| 44 | +- FacultyCredentials |
| 45 | + |
| 46 | +### Dark Blue Community |
| 47 | +- Committees |
| 48 | +- CommitteeMembers |
| 49 | + |
| 50 | + |
| 51 | +## REFACTORING OPTIONS |
| 52 | + |
| 53 | +The Brown community seems broad, 5 tables, two of which are join tables. If I |
| 54 | +- moved Students and StudentCourses to the Pink Community |
| 55 | +- moved Faculty and FacultyCourses to the Red Community |
| 56 | +- moved Courses to the Blue Community |
| 57 | + |
| 58 | +Then I would have 5 communities with a bounded contexts suitable for microservice development. |
| 59 | + |
| 60 | +### Blue Community - Course Catalog |
| 61 | +- Colleges |
| 62 | +- Departments |
| 63 | +- Majors |
| 64 | +- StudentMajors |
| 65 | +- Courses |
| 66 | + |
| 67 | +### Pink Community - Student Info |
| 68 | +- Addresses |
| 69 | +- Transcripts |
| 70 | +- StudentFinances |
| 71 | +- Students |
| 72 | +- StudentCourses |
| 73 | + |
| 74 | +### Red Community - Faculty and Staff |
| 75 | +- Staff |
| 76 | +- Roles |
| 77 | +- Employee Benefits |
| 78 | +- Faculty |
| 79 | +- FacultyCourses |
| 80 | + |
| 81 | +### Green Community - Faculty Achievements |
| 82 | +- Publications |
| 83 | +- FacultyCredentials |
| 84 | + |
| 85 | +### Dark Blue Community - University Committees |
| 86 | +- Committees |
| 87 | +- CommitteeMembers |
| 88 | + |
| 89 | + |
| 90 | +These communities are starting to look like a bounded context for a microservices development team, one that would be responsible for all CRUD operations against these explicit table groupings. |
| 91 | + |
| 92 | +And you may say, how can that be done? I would have to revisit my schema, create and load Pluggabe Databases, make sure these development teams have isolation. That's alot of work |
| 93 | + |
| 94 | +Yes it is, unless you use [JSON Duality Views](https://blogs.oracle.com/database/post/json-relational-duality-app-dev). You could be doing microservice development against your SQL database same day. |
0 commit comments