19. Backend
Инструменты для работы с динамическими данными
● PostgreSQL + PostGIS
● MySQL + Spatial Data
● Можно написать свои
20. Backend
Проблемы статики
● файлов много
● файлы маленькие (1-15кб)
● на файловой системе хочется положить много файлов рядом
● файлов реально много (68 719 476 736 на zoom 18)
● очень много маленьких файлов, которые занимают места меньше
размера кластера, просят указатель и которые хочется положить в один
каталог
21. Backend
Инструменты для работы со статикой
● Распределенная ФС (например Ceph)
● Squashfs
● NoSQL (MongoDB + MongoFS)
● Nginx + ФС
22. Backend
Раздать статику с помощью FS? Реализуемо!
● отключаем журналирование
● уменьшаем размер кластера
● разворачиваем пути, например /z/x/y.png можно разложить в /hash[4]
/hash[3]/hash[2]/hash[1]/hash[0].png (mod_tile от OSM)
23. Backend
/hash[4]/hash[3]/hash[2]/hash[1]/hash[0].png
// We attempt to cluster the tiles so that a 16x16 square of tiles will be in a single directory
// Hash stores our 40 bit result of mixing the 20 bits of the x & y co-ordinates
// 4 bits of x & y are used per byte of output
unsigned char i, hash[5];
for (i=0; i<5; i++) {
hash[i] = ((x & 0x0f) << 4) | (y & 0x0f);
x >>= 4;
y >>= 4;
}
https://github.com/openstreetmap/mod_tile/blob/master/src/store_file_utils.c