2013-08-16 1 views
1

У меня есть учетная запись объекта, которая содержит в основном две группы информации.GAE in О разбиении объекта на две для производительности. (Golang)

Account { 
    a1 // Group 1 rarely change 
    a2 
    a3 
    a4 
    ... 
    b1 // Group 2 change frequently 
    b2 
    b3 
    b4 
    ... 
} 

Первая группа - это общая информация, которая не будет обновляться слишком часто, но вторая группа будет часто меняться.

Интересно, если я должен извлечь Группу 2 в другую организацию и хранение ключа в учетной записи так, когда я обновляю группе 2, мне нужно только положить() данные группы 2.

мое беспокойство, почти все операции с сервером будут в основном требовать данных от обеих групп 1 + 2. Если я разделяю счет на 2, мне нужно сделать два get() для извлечения обоих данных.

Я знаю, что чтение данных в формате данных намного дешевле, чем запись. Но расщепление объекта не уменьшает вызов put(). В этом случае я не знаю, следует ли мне сфокусировать производительность на put() или get().

Благодаря

ответ

1

Если данные в 1-й группе не меняется, индексы не обновляются, так что нет никакой денежной затраты, связанные с обновлением их, в то время как есть стоимость делает второй выборки.

Вам всегда нужны все данные, поэтому вам не нужно разделить их.

Выгода, получаемая от расщепления, будет в производительности. Извлечение/помещение небольшого объекта занимает меньше времени, чем большая сущность. Так, например, если группа 1 была действительно большой (как в общем размере в байтах), и вам не нужны данные, вы могли бы улучшить свою производительность, только извлекая/помещая объект в группу 2. Это не похоже на ваш сценарий.

Если вы сказали, что группа 1 была 500KB, я бы подумал о ее расщеплении. Хотя, если вы все равно должны получать группу 1, это аннулирует преимущество.

Смежные вопросы