Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

Learner Service provides APIs related to resources such as Organisations, Users (i.e. learner), Course Batches, Locations, Badges, Pages etc.

...

ApproachProsCons
Cassandra Trigger
  • Immediately triggered
  • Maintains order (not tested in multi-node scenario)
  • Deprecated (refer Datastax documentation)
  • Semi-private and subject to change
  • Performance overhead
Use audit logging of Apache Cassandra 4.0
  • Out of the box product feature which is expected to meet performance and reliability design goals
  • Not yet released
Change Data Capture
  • No performance overhead during write
  • Data not immediately available (requires memtables flush or commit log limit)
  • Every node has a separate commit log (binary format)
  • Consumer needs to handle duplicate events in a multi-node setup
ecAudit (Ericsson Cassandra Audit)
  • Immediately logged (on the node where the query is executed)
  • Read is straightforward as log is in text format
  • Correlation required in case of FAILED events
  • Every node has a separate audit log
  • Performance overhead

...

Indexer Mapping

Code Block
{
    "user": {
        "indexTypeindex": "user",
        "key": "id",
        "visibilityEnabled": true
    },
    "user_education": {
        "indexTypeindex": "user",
        "path": "education",
        "key": "userid",
        "visibilityEnabled": true
    },
    "user_job_profile": {
        "indexTypeindex": "user",
        "path": "jobProfile",
        "key": "userid",
        "visibilityEnabled": true
    },
    "user_org": {
        "indexTypeindex": "user",
        "path": "organisations",
        "key": "userid",
        "visibilityEnabled": true
    },
    "address": {
        "types": {
            "usr": {
                "indexTypeindex": "user",
                "path": "address",
                "key": "userid",
                "visibilityEnabled": true
            },
            "edu": {
                "indexTypeindex": "user",
                "path": "education.address",
                "key": "userid",
                "visibilityEnabled": true
            },
            "job": {
                "indexTypeindex": "user",
                "path": "jobProfile.address",
                "key": "userid",
                "visibilityEnabled": true
            },
            "org": {
                "indexTypeindex": "org",
                "path": "address",
                "key": "orgid" // TODO
            },
        }
    },
    "organisation": {
        "indexTypeindex": "org",
        "key": "id"

    },
    "course_batch": {
        "indexTypeindex": "cbatch",
        "key": "id"
    },
    "user_courses": {
        "indexTypeindex": "usercourses",
        "key": "id"
    },
    "location": {
        "indexTypeindex": "location",
        "key": "id"
    },
    "visibility": {
        "indexTypeindex": {
            "user": {
                "table": "user",
                "column": "profilevisibility",
                "indexType": "profilevisibility",
                "key": "id"
            }
        }
    }
}

...

3) Performance comparison of Cassandra Triggers and ecAudit (in progress)

Please referĀ Performance Comparison of Cassandra Audit Log Options.

4) Drop data in user_education, user_job_profile and address tables based on discussion with Rahul and Rayulu

5) Rename indexType in mapping to ____ ?

index

Appendix

Learner Service Data Models Comparison