Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Create grouperNewData.adoc
khazelton committed Mar 14, 2022
1 parent dffc0ca commit 5d66263
Showing 1 changed file with 206 additions and 0 deletions.
206 changes: 206 additions & 0 deletions grouperNewData.adoc
@@ -0,0 +1,206 @@
=== grouperNewDataModel.adoc

==== grouper_subject_source
```
id_index
name
id
description
```
==== grouper_members

Existing table can be stripped down since data is in the entity tables
```
id (012)
idIndex
subjectType (group / person / app / thing)
search strings
sort strings
resolvable
```
==== grouper_members_identifiers

Make sure identifiers.  (hopefully unique)

When subjects are looked up, it can be a two part process (instead of N-part for N subject sources).

Look at groups in group table,
Look at grouper local entities in group table (maybe move to entities table)
Look at subjects (including GrouperSystem, users, apps, things) in the data_field tables based on data fields that are marked as
identifiers
Perhaps make external calls if configured
```
id (737)
member_id (012)
subject_identifier_value (12345678)  (indexed non unique)
data_field_id
```
Unique index on data_field_id / subject_identifier_value tuple

==== grouper_data_field

Types of data fields for user or rows

Users:
```
id (234)
system_name (emailAddress)
display_name (Email)
data_type (boolean, string, integer)
type (user)
multi_valued? false
description
viewable_by_group_id abc123
is_identifier? true
access_related? false
stored_locally? true
stored_in_pit? true
pit_retenion: 5 * 365
group_can_see: ref:staff
from_sole_source: my_people
calculated: false
dynamic: false
```
Row
```
id (567)
system_name (org)
display_name (Org)
data_type (boolean, string, integer)
type (row)
multi_valued: true
description
viewable_by_group_id xyz234
is_identifier? false
access_related? true
stored_locally? true
pit_retention: 5*365
group_can_see: ref:powerUsers
from_sole_source: my_payroll
calculated: false
dynamic: false
```
==== grouper_data_row

Type of data field rows available for users
```
id (123)
system_name (affiliation)
display_name (Affiliation)
description
viewable_by_group_id xyz234
```
==== grouper_data_row_field

Which fields are in which rows
```
id (538)
grouper_data_row_id (012)
grouper_data_field_id (567)
```
==== grouper_data_member_field

Assignment of a data field to an entity.   When data is synced to the data field tables it will need to do some matching and assign a new grouper_members row if existing not found
```
id (480)
member_id (012)
grouper_data_field_id (234)
value_id (789)
```
==== grouper_data_member_changelog

Events that happen to data fields to be processed by loaders/provisioners/etc.  Keep data for a week then delete
```
id (480)
member_id (012)
grouper_data_field_id (234)
old_value_id
new_value_id
date
action
grouper_data_row_id (123)
```
==== grouper_data_member_field_pit

History of data field to entity
```
id (480)
member_id (012)
grouper_data_field_id (234)
value_id (789)
started_on 1/2/3
ended_on
```
==== grouper_data_member_row

Assignment of a row of data to an entity
```
id (321)
member_id (012)
grouper_data_row_id (123)
```
==== grouper_data_member_row_pit

History of assignment of a row of data to an entity
```
id (321)
member_id (012)
grouper_data_row_id (123)
started_on 1/2/3
ended_on
```
==== grouper_data_member_row_field

Assignment of a field to a row assignment
```
id (637)
grouper_data_row_field_id (538)
value_id (654)
```
==== grouper_data_member_row_field_pit

History of assignment of a field to a row assignment
```
id (637)
grouper_data_row_field_id (538)
value_id (654)
started_on 4/5/2021
ended_on
```
==== grouper_dictionary

Keep data field values here to reduce data redundancy
```
id (789)
value (a@b.c)

id (654)
value (math)
```



==== grouper_data_field_sec_group_mem_cache
```
Cache these memberships so lookups are fast.  Cache this in memory too for long running processes.  The groups that are cached are... any groups that secure fields, any groups that secure rows, etc

id
sec_group_id
mem_id_index
```
==== grouper_data_field_row_sec

Row level security for data
```
id (941)
grouper_data_field_id (234)
group_id_of_result_member
viewable_by_group_id rst567
```
==== grouper_data_field_row_pop_group

```
id
group_id_of_result_member
viewable_by_group_id rst567
```

0 comments on commit 5d66263

Please sign in to comment.