From 662e854feddf7bfd33aa0f756760390edace7697 Mon Sep 17 00:00:00 2001 From: Bastien Abadie <bastien@nextcairn.com> Date: Fri, 18 May 2018 10:23:50 +0200 Subject: [PATCH] Setup PG materialized views for parents/children as cache. --- arkindex/documents/migrations/0003_cache.py | 63 +++++++++++++++++++++ arkindex/documents/models.py | 4 +- 2 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 arkindex/documents/migrations/0003_cache.py diff --git a/arkindex/documents/migrations/0003_cache.py b/arkindex/documents/migrations/0003_cache.py new file mode 100644 index 0000000000..3a122d8000 --- /dev/null +++ b/arkindex/documents/migrations/0003_cache.py @@ -0,0 +1,63 @@ +# Generated by Django 2.0 on 2018-05-18 08:09 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('documents', '0002_element_zone'), + ] + + operations = [ + migrations.RunSQL( + """ + create materialized view elements_parents_cache as + ( + select * from elements_parents + ); + """, + reverse_sql="drop materialized view if exists elements_parents_cache;" + ), + migrations.RunSQL( + """ + create materialized view elements_children_cache as + ( + select * from elements_children + ); + """, + reverse_sql="drop materialized view if exists elements_children_cache;" + ), + migrations.RunSQL( + """ + create index idx_elements_parents_cache_id on elements_parents_cache (id); + """, + reverse_sql="drop index if exists idx_elements_parents_cache_id;" + ), + migrations.RunSQL( + """ + create index idx_elements_parents_cache_parent on elements_parents_cache (parent_id); + """, + reverse_sql="drop index if exists idx_elements_parents_cache_parent;" + ), + migrations.RunSQL( + """ + create index idx_elements_children_cache_id on elements_children_cache (id); + """, + reverse_sql="drop index if exists idx_elements_children_cache_id;" + ), + migrations.RunSQL( + """ + create index idx_elements_children_cache_child on elements_children_cache (child_id); + """, + reverse_sql="drop index if exists idx_elements_children_cache_child;" + ), + migrations.AlterModelTable( + name='elementchildren', + table='elements_children_cache', + ), + migrations.AlterModelTable( + name='elementparents', + table='elements_parents_cache', + ), + ] diff --git a/arkindex/documents/models.py b/arkindex/documents/models.py index 2834783b1a..fb0df1486f 100644 --- a/arkindex/documents/models.py +++ b/arkindex/documents/models.py @@ -40,7 +40,7 @@ class ElementParents(models.Model): class Meta: managed = False - db_table = 'elements_parents' + db_table = 'elements_parents_cache' class ElementChildren(models.Model): @@ -51,7 +51,7 @@ class ElementChildren(models.Model): class Meta: managed = False - db_table = 'elements_children' + db_table = 'elements_children_cache' class Element(IndexableModel): -- GitLab