$30 off During Our Annual Pro Sale. View Details »

ATM Fraud Detection with Oracle Property Graphs

ATM Fraud Detection with Oracle Property Graphs

With a stream of ATM transactions in Apache Kafka, how to detect if a card has been cloned? Turn the stream into a property graph and use PGQL to detect possible frauds. Two challenges in one talk: streams to property graphs and fraud detection. Proving the power and flexibility of graph databases, the mandatory product in your Analytics toolbox!

Gianni Ceresa

October 08, 2019
Tweet

More Decks by Gianni Ceresa

Other Decks in Technology

Transcript

  1. View Slide

  2. View Slide

  3. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
    bit.ly/OracleACEProgram
    450+ Technical Experts
    Helping Peers Globally
    Nominate yourself or someone you know: acenomination.oracle.com

    View Slide

  4. Vertex
    edge
    A Property Graph
    (also called node)

    View Slide

  5. edge
    edge label
    edge properties
    edge ID
    directed edge
    vertex (node)
    vertex
    properties
    vertex ID
    a vertex can
    have a label

    View Slide

  6. View Slide

  7. Every row of a table has a fixed, identical structure
    Connections at a table level (not row)
    Nodes and edges can have any number of properties
    Connections at a node level (can be seen as row level)

    View Slide

  8. Spain
    Italy
    John Doe
    Company A
    Company B
    Company C
    Company D
    Located in
    Located in
    Located in
    Located in
    Buys from
    Buys from
    Buys from
    Buys from
    Money laundering
    and VAT frauds
    Owns

    View Slide

  9. Good guy
    Bad guy
    Card cloned while
    using an ATM
    Somewhere else

    View Slide

  10. bank
    customer
    account account
    customer
    ATM
    account
    CC
    transfer money to
    owns
    owns
    owns
    get money from

    View Slide







  11. The presentation was a live demo,
    screenshots aren’t as explicit as seeing it…

    View Slide

  12. View Slide

  13. View Slide

  14. {
    "account_id": "a839",
    "timestamp": "2019-03-10 13:49:32 +0000",
    "atm": "24/7",
    "amount": 20,
    "location": {
    "lat": "53.7835061",
    "lon": "-1.3794149"
    },
    "transaction_id": "555aa4f6-433b-11e9-b9b9-0242ac140005"
    }
    Location of the ATM

    View Slide

  15. Kafka
    stream
    Property Graph

    View Slide

  16. Kafka
    stream
    Property Graph
    A Java app consume the Kafka stream and update the graph with
    the new messages received.

    View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. The number of edges increase over time, it’s the Kafka
    messages being loaded in the graph

    View Slide

  21. PGQL query, looks like SQL but has the extra GRAPH syntax

    View Slide

  22. PGQL query, looks like SQL but has the extra GRAPH syntax

    View Slide

  23. View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. The UK set of ATMs used is a bit too sparse over a big
    area. Too many of the randomly generated transactions
    seem to be fraud.

    View Slide

  29. The UK set of ATMs used is a bit too sparse over a big
    area. Too many of the randomly generated transactions
    seem to be fraud.

    View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide








  35. more about graphs:
    Data Lineage Made Easy with Graph Database
    14:50-15:20 | Sentosa 1 (the other room)
    UKOUG Techfest 2019, Dec 2019 in Brighton

    View Slide