ZODB: The Graph Database for PythonDevelopers


Follow to receive video recommendations   a   A
Upvotes: DownVotes:
Age: 7 months     Page Views: 92
Votes / View: 11    Wilson Score: 0.21

You can see the current version of the slides athttps:--pythonlinks.info-presentations-zodbtalk.pdfI invite you to first watch the full but slightly earlier version of thetalk at PythonLinks.info-zodbAnd then read the following summary to see what else is being added tothe talk.The ZODB is a mature graph database written in Python and optimized inC. Just subclass off of class Persistent Object and PersistentContainer, and your objects, graphs and applications become persistent.The market for Graph Databases has recently exploded, as evidenced byover $200 Million invested in graph database companies. Most of thegraph databases are written in Java.If you are a Python developer, you will find much greater productivityusing a graph database written in Python, than one written in staticallybound Java. You cannot add or remove an attribute to an object atrun-time in a statically typed language. Furthermore, the major Javadatabases constrain you to one of several persistent data types.Persistent Python, supported by the ZODB allows you to make any Pythondata structure persistent. Publishing JSON, YAML and Pickles are wellsupported. GraphQL is conceptually very close to the ZODB schemaapproach.Okay, the ZODB is interesting, but is it risky? The ZODB is mature, rocksolid and well supported. The ZODB is quite heavily used in the Ploneworld. Just the government of Brazil has over 100 websites using theZODB. That includes the President's office, parliament and many othergovernmet offices. Recently the ZODB has been reengineered. It nowsupports thousands of write transactions per second.The major applications of graph databases are fraud detection, socialnetworks and computer networks. NLP is an interesting application area.The talk reviews the basic concepts of traversal and views on objects.It is important to understand the basics of how objects are stored ondisk. Objects are pickled. There are multiple ways to store thosepickles. When using File Storage, the objects in a transaction areappended to he end of the database files. When using relstorage, arecord is created with the object id, the version number, and thepickle. The talk reviews how objects are distributed across multiplePython processes. With ZEO the pickles are served across the network.Connections are encrypted. The talk also discusses how to buildreal-time (chat and iOT) applications using the MQTT message broker withthe ZODB.Performance, scalability, and number of objects, are all discussed.Comparisons are made to traditional relational databases.The ZODB Demo makes it very easy to start building your own applicationson top of the ZODB. You can start by customizing the TreeLeaf,TreeBranch and TreeRoot classes and their templates. You get CRUD forfree.The demo includes traditional relational CRUD, Create, Read, Update, andDelete. But it also includes the extended graph CRUD. Rename a Leaf orBranch. Cut and paste leaves or branches, copy and paste leaves orbranches. View and restore historic versions are demonstrated.Of course the real reason to use a graph database is to improve the userexperience. A basic concept in human factors is to limit lists to 7items. That is why librarians use hierarchy. The Panama Papersjournalists said a graph database was more intuitive. Have you everselected your country from a list of 150 countries. Much better to use ahierarchical list. Have you ever used a Google map with thousands ofpins. Much better to have one page for each city.And of course the most important reason for using a graph database isnot what the software does, but how it changes how we humans think aboutour problems, and how we make decisions. Graph databases enable adifferent approach to distributing applications across the network. Theyencourage a different approach to managing the git development process.They enable a different set of decisions to be made.By the end of this talk, readers should have a much better appreciationfor the rich but little known and under appreciated ZODB ecosystem.