小编Dan*_*ath的帖子

什么时候使用FTP好?

根据我的经验,我看到很多架构图,它们广泛使用FTP作为链接架构组件的媒介.

作为一个不做出架构决策但倾向于查看架构图的人,任何人都可以解释使用FTP的价值,适当的地方和将数据作为文件传输时是个好主意.

我知道通常遗留系统只需要以这种方式工作 - 尽管任何历史见解都会很有趣

我可以看到传输文件的吸引力(特别是如果那是需要转移的东西),因为它的简单性和熟悉性,并且如果推理超出这个范围就会感到奇怪.

编辑:感谢那些指出SFTP更受欢迎的人,但是我的问题比想要文件传输协议的建议更广泛.对困惑感到抱歉.

architecture ftp file-transfer

8
推荐指数
2
解决办法
3709
查看次数

App Engine本地数据存储内容不会保留

我正在使用web.py和GAE(Windows 7,Python27)运行一些基本的测试代码.该表单允许将消息发布到数据存储区.当我停止应用并再次运行时,之前发布的任何数据都已消失.使用admin手动添加实体(http:// localhost:8080/_ah/admin/datastore)也存在同样的问题.

我尝试使用额外标志在应用程序设置中设置路径:

--datastore_path=D:/path/to/app/
Run Code Online (Sandbox Code Playgroud)

(不确定那里的语法).它没有效果.我搜索了我的计算机上的*.datastore,并且找不到任何文件,这似乎是可疑的,尽管数据显然是在应用程序运行期间存储在某处.

from google.appengine.ext import db
import web

urls = (
    '/', 'index',
    '/note', 'note',
    '/crash', 'crash'
)

render = web.template.render('templates/')

class Note(db.Model):
    content = db.StringProperty(multiline=True)
    date = db.DateTimeProperty(auto_now_add=True)

class index:
    def GET(self):
            notes = db.GqlQuery("SELECT * FROM Note ORDER BY date DESC LIMIT 10")
            return render.index(notes)

class note:
    def POST(self):
            i = web.input('content')
            note = Note()
            note.content = i.content
            note.put()
            return web.seeother('/')

class crash:
    def GET(self):
            import logging
            logging.error('test')
            crash

app = web.application(urls, globals())

def …
Run Code Online (Sandbox Code Playgroud)

google-app-engine persistence python-2.7 google-cloud-datastore

8
推荐指数
1
解决办法
3459
查看次数

如何使用java更新谷歌应用引擎中的数据存储的字段值

我在数据存储中创建了一个Login(Kind).在登录中,我创建了两个字段username和passsword.当用户更改密码时,我想更新数据存储区内的字段值.但是当我使用这段代码时,

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity passwordchange = new Entity("Login");
passwordchange.setProperty("password", "admin@123");
datastore.put(passwordchange);
Run Code Online (Sandbox Code Playgroud)

它会创建一个新行并插入密码"admin @ 123",而不是在同一行中更新新密码.

任何人都可以建议我如何更新字段的数据.

java google-app-engine google-cloud-datastore

8
推荐指数
1
解决办法
6219
查看次数

Google Cloud Dataflow ETL(数据存储 - >转换 - > BigQuery)

我们使用数据存储作为持久性后端在Google App Engine上运行应用程序.目前,应用程序主要具有"OLTP"功能和一些初步报告.在实施报告时,我们遇到使用数据存储区和GQL处理大量数据(数百万个对象)非常困难.为了使用适当的报告和商业智能功能增强我们的应用程序,我们认为最好设置ETL过程以将数据从Datastore移动到BigQuery.

最初我们考虑将ETL过程实现为App Engine cron作业,但看起来Dataflow也可用于此.我们有以下设置流程的要求

  • 能够通过使用BigQuery的非流API将所有现有数据推送到BigQuery.
  • 完成上述操作后,只要使用流API在Datastore到BigQuery中更新/创建任何新数据,就将其推送.

我的问题是

  1. Cloud Dataflow是否适合实施此管道?
  2. 我们能够推送现有数据吗?一些种类有数百万个对象.
  3. 实施它的正确方法应该是什么?我们正在考虑两种方法. 一种方法是通过pub/sub,即对于现有数据创建一个cron作业并将所有数据推送到pub/sub.对于任何新的更新,在DataStore中更新数据的同时将数据推送到pub/sub.Dataflow Pipeline将从pub/sub中选择它并将其推送到BigQuery. 第二种方法是在Dataflow中创建一个批处理管道,它将查询DataStore并将任何新数据推送到BigQuery.

问题是这两种方法可行吗?哪一个更好的成本?有没有比上面两个更好的其他方式?

谢谢,

rizTaak

google-app-engine google-bigquery google-cloud-datastore google-cloud-dataflow

8
推荐指数
1
解决办法
4540
查看次数

appengine数据存储区超时错误5和11之间有什么区别?

我正在尝试加速具有大型数据存储区PutMulti调用(500个实体)的Google App Engine请求处理程序,方法是将其拆分为多个实体并运行并发goroutine以发送较小的PutMulti调用(每个100个实体).

在此之前,当我在许多并发请求上测试处理程序时,我经常在截止日期之前Call error 11: Deadline exceeded (timeout)从我的PutMulti调用中获取数据存储区错误.在并行化之后,处理程序确实加速了,但我偶尔也会遇到这个错误以及另一种类型的错误API error 5 (datastore_v3: TIMEOUT): The datastore operation timed out, or the data was temporarily unavailable.

这个错误5是由于数据存储区中的争用造成的,错误5和11之间有什么区别?

concurrency google-app-engine go google-cloud-datastore

8
推荐指数
1
解决办法
1013
查看次数

数据存储:DatastoreFailureException:无法获取全局配置

有没有人曾经有这个错误?我无法在谷歌上找到任何一个曾经发生过这种情况的证据.

这是堆栈跟踪,它从数据存储区上的.delete()调用开始.

com.google.appengine.api.datastore.DatastoreFailureException: Unable to fetch global config
    at com.google.appengine.api.datastore.DatastoreApiHelper.translateError(DatastoreApiHelper.java:71)
    at com.google.appengine.api.datastore.DatastoreApiHelper$1.convertException(DatastoreApiHelper.java:129)
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:97)
    at com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$7.get(AsyncDatastoreServiceImpl.java:406)
    at com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$7.get(AsyncDatastoreServiceImpl.java:402)
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:89)
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:89)
    at com.google.appengine.api.datastore.FutureHelper.getInternal(FutureHelper.java:76)
    at com.google.appengine.api.datastore.FutureHelper.quietGet(FutureHelper.java:36)
    at com.google.appengine.api.datastore.DatastoreServiceImpl.delete(DatastoreServiceImpl.java:76)
    at com.universeprojects.cacheddatastore.CachedDatastoreService.delete(CachedDatastoreService.java:929)
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-cloud-datastore

8
推荐指数
1
解决办法
333
查看次数

访问Firestore规则中的父文档字段

我正在Firestore中实现一个食谱书,其中每个用户都能够看到所有用户创建的所有食谱,但只允许食谱的原始作者编辑或删除食谱.任何用户也可以创建新配方.

我的问题是我无法在子集合父文档的字段上设置子集的权限以"监听".

每个食谱文档包含三件事.称为一个字段name存储配方的名称,其中,一个叫场creatorUID,其中request.auth.uid创作者的UID的存储和一个叫做子集合ingredients包含一些随机域的文档.

service cloud.firestore {
  match /databases/{database}/documents {

    function isSignedIn() {
      return request.auth != null;
    }

    match /ListOfRecipes/{recipe} {
        allow read, create: if isSignedIn();
        allow update, delete: if resource.data.creatorUID == request.auth.uid;

        match /{list=**} {
            allow read: if isSignedIn();
            // Should return true if recipe.creatorUID has same value as request.auth.uid
            allow write: if recipe.creatorUID == request.auth.uid;
        }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是,使用这些规则它只能用于创建配方文档.db表示,子集合及其文档不会创建

FirebaseError:[code = permission-denied]:权限丢失或不足.FirebaseError:权限丢失或不足.

这些调用来自Angular客户端及其官方库.

firebase firebase-security angularfire2 google-cloud-firestore

8
推荐指数
1
解决办法
2956
查看次数

Google App Engine数据存储区中的高效NoSQL建模

我正在Google App Engine上编写应用程序,以帮助我更好地学习它.我将数据保存在数据存储区中.

该应用程序是类似于StackOverflow的模型:您有一个Story实体,它有一组Comment实体,而这些实体又可以被许多用户所喜欢/讨厌.我现在建模的方式如下:

class Story {
    Comment[] comments;
    ...
}

class Comment {
    User[] likes;
    User[] hates;
    ...
}
Run Code Online (Sandbox Code Playgroud)

因此,当您加载给定的故事时,您可以列出所有评论,以及每个评论的喜欢和讨厌的百分比.您还可以跟踪给定用户是否已投票评论.

我假设我可以延迟加载Comment实体中的所有实际用户,但即便如此,我还是认为有更好的方法可以做到这一点.

这将如何处理一个有数百条评论的故事,每条评论都有数十万票?!

在NoSQL中建模这种概念的常用方法是什么?

google-app-engine data-modeling nosql google-cloud-datastore

7
推荐指数
1
解决办法
1349
查看次数

数据存储:Put上的实体类型无效

我正在尝试创建一个围绕我的种类的包装器,这是我如何做到这一点:

package model

import (
    "time"
)

type Kind interface {
    Name() string
}

type Message struct {
    Text      string
    CreatedOn time.Time
    UserId    string
}

func (q Message) Name() string {
    return "MESSAGE"
}
Run Code Online (Sandbox Code Playgroud)

我介绍的原因type Kind interface是:

// Stores the given model for the the kind in data store
func Store(req *http.Request, data Kind) error {
    ctx := appengine.NewContext(req)
    key := datastore.NewKey(ctx, data.Name(), "", 0, nil)
    _, err := datastore.Put(ctx, key, &data)
    return err
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在使用data.Name()各种名称. …

google-app-engine go google-cloud-datastore

7
推荐指数
1
解决办法
4136
查看次数

为灵活的Cloud Datastore创建索引时出错:AppInfoExternal类型的对象的意外属性"索引"

当我访问Cloud Datastore Web管理时,"索引"部分下没有列出索引,我想明确定义一些索引以运行高级查询.我有一个yaml文件,看起来像:


indexes:
- kind: order
  ancestor: no
  properties:
  - name: email
  - name: name
  - name: ownerId
  - name: status
  - name: updated_at
  - name: created_at
    direction: desc
Run Code Online (Sandbox Code Playgroud)

然后我运行以下命令来创建索引:

gcloud预览数据存储区创建索引indices.yaml

这是我得到的错误消息:

"AppInfoExternal类型的对象的意外属性'索引'"

有没有人遇到同样的问题?有任何想法吗?

问候,何塞

google-cloud-datastore google-cloud-platform google-cloud-sdk

7
推荐指数
1
解决办法
720
查看次数