Карты сайта должны быть не более 10 МБ и содержать не более 50 000 URL-адресов, поэтому вам придется как-то их разбить.
Вам понадобится какая-то стратегия шардинга. Я не знаю, как выглядят ваши данные, поэтому сейчас, скажем, каждый раз, когда вы создаете сущность страницы, вы присваиваете ей случайное целое число от 1 до 500.
Далее создайте индекс Sitemap и выложите ссылку на карту сайта для каждого значения индекса:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>http://example.appspot.com/sitemap?random=1</loc>
</sitemap>
<sitemap>
<loc>http://example.appspot.com/sitemap?random=2</loc>
</sitemap>
...
<sitemap>
<loc>http://example.appspot.com/sitemap?random=500</loc>
</sitemap>
</sitemapindex>
Наконец, на странице вашей карты сайта запросите страницы и выберите случайный индекс. Если у вас есть 100 000 страниц, это даст вам около 200 URL на карту сайта.
Немного другая стратегия заключается в том, чтобы дать каждой странице автоматически увеличивающийся числовой идентификатор. Для этого вам необходим счетчик, который блокируется транзакциями и увеличивается каждый раз при создании новой страницы. Недостатком этого является то, что вы не можете распараллеливать создание новых сущностей страниц. Положительным моментом является то, что у вас будет немного больший контроль над тем, как размещаются ваши страницы, поскольку вашим первым файлом карты могут быть страницы 1-1000 и т. Д.