我现在正在将Google Datastore用于我公司的数据库.今天,我做了一个索引,并成功列入'指数'.但是我做的索引的大小和实体是空的.
谷歌数据存储区的文档说该索引是自动生成的,但事实并非如此.
是否有任何命令或事情可以生成索引?
下图是截图.
上面一个是新的.以下是已经使用过的.
我点击这个结果不能设置两次运行时错误GAE Ndb异步查询在做ndb.Future.wait_all(futures)一堆异步查询时.
像这样的东西:
futures = []
for item in items:
item._future_get = MyEntity.query(...).get_async()
futures.append(item._future_get)
ndb.Future.wait_all(futures)
# ...
Run Code Online (Sandbox Code Playgroud)
它失败了wait_allwith with result无法设置两次
SO上没有提到此错误消息.谷歌在2011年有2-3次提及它,并没有明确的解释.
更多信息:
items是前一次获取的ndb实体.但它们在这里并不重要(至少我认为),因为查询是在MyEntity上执行的.我习惯以这种方式将期货附加到它们所涉及的对象上,因此当所有已完成时更容易理清.
堆栈跟踪:
File "/home/my_project/app/main/admin/my_module.py", line 166, in admin_base_cleanup_details ndb.Future.wait_all(futures)
File "/usr/lib/python2.7/google_appengine/google/appengine/ext/ndb/tasklets.py", line 350, in wait_all ev.run1()
File "/usr/lib/python2.7/google_appengine/google/appengine/ext/ndb/eventloop.py", line 235, in run1 delay = self.run0()
File "/usr/lib/python2.7/google_appengine/google/appengine/ext/ndb/eventloop.py", line 197, in run0 callback(*args, **kwds)
INFO 2016-04-26 08:40:04,152 module.py:808] default: "GET /admin/cleanup/details?mode=status HTTP/1.1" 500 -
File "/usr/lib/python2.7/google_appengine/google/appengine/ext/ndb/tasklets.py", line 475, in _on_future_completion self._help_tasklet_along(ns, ds_conn, gen, …Run Code Online (Sandbox Code Playgroud) python google-app-engine app-engine-ndb google-cloud-datastore
我有如下类 City 的模型:
@Entity
public class City {
@Id
Long id;
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Run Code Online (Sandbox Code Playgroud)
我有另一个模型类 Person 下面给出:
@Entity
public class Person {
@Id
Long id;
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ApiResourceProperty(ignored = AnnotationBoolean.TRUE)
Key<City> city;
}
Run Code Online (Sandbox Code Playgroud)
之后,我使用 android studio 为这两个类生成端点并部署它。
这是生成的端点的代码:
个人端点
@Api(
name = "personApi",
version = "v1",
resource = "person", …Run Code Online (Sandbox Code Playgroud) google-app-engine android objectify google-cloud-endpoints google-cloud-datastore
我们在谷歌应用引擎上运行了一个Java应用程序.有一种叫做联系.以下是示例模式
Contact
{
long id
String firstName
String lastName
...
}
Run Code Online (Sandbox Code Playgroud)
以上是existig模型,用于支持我们在数据存储和文本搜索中存储此对象的一些要求
现在我们想要将联系人与他们的页面查看数据集成.
每个联系人可以拥有数千个页面浏览记录,甚至可以拥有数百万个联系人
以下是示例页面访问对象[注意:我们目前没有此对象,这只是提供有关页面访问的信息]
PageVisit
{
long id
String url
String refUrl
int country
String city
....
}
Run Code Online (Sandbox Code Playgroud)
我们有一个要求,需要查询联系核心属性和他的页面访问数据
对于前:
select * from Contact where firstName = 'abc' and url = 'cccccc.com';
select * from Contact where firstName = 'abc' or url = 'cccccc.com';
Run Code Online (Sandbox Code Playgroud)
要编写此类查询,我们需要联系核心属性和访问的页面需要在Contact对象本身中可用,但联系人可以拥有大量的页面视图.因此,这将跨越实体最大大小限制
那么如何在数据存储和文本搜索中设计这种情况下的联系模型.
谢谢
google-app-engine gql google-cloud-datastore google-cloud-platform
我认为这是不可能的,如果添加了新索引,则必须重新加载所有数据.
这应该发生吗?
我正在查询看起来像这样的数据存储区:
Query<Entity> query = Query.gqlQueryBuilder(Query.ResultType.ENTITY,
"SELECT * FROM " + kind
+ " WHERE Location = place").build();
results = datastore.run(query);
Run Code Online (Sandbox Code Playgroud)
结果存储在一个 QueryResults<Entity> results;
然后我遍历结果并提取我需要的数据.
这种类型有大约10000个实体,我将它们全部提取出来.
while (results.hasNext()) {
Entity result = results.next();
....
}
Run Code Online (Sandbox Code Playgroud)
这需要10秒才能实现.有没有办法减少这个时间?我知道循环结果导致减速.
我在 Google Cloud Datastore 中有一个实体。属性之一是字符串数组。例如:
属性:技能
实体 1:
值:["mysql","sqlserver","postgresql","sqllite","sql-server-2008","sql"]
实体 2:
值:["css","css3"]
现在,我需要查询那些包含数组元素的实体css*
在典型的 SQL 中,它将是select * from kindName where skills like 'css%'
我尝试过select * from kindName where skills = 'css',效果很好,但是如何获取具有css*与 SQL 查询类似的元素的实体?
或者
为此建立数据模型的最佳方法是什么?
google-app-engine gql google-cloud-datastore google-cloud-platform
我试图多次阅读该文档但未能理解它.有人可以用外行的话来解释吗?
database distributed google-cloud-platform google-cloud-spanner
我使用gcloud app deploy部署应用程序.它运行良好几个小时,然后工作陷入以下信息日志:
03:54:59.748 Refreshing due to a 401 (attempt 1/2)
03:58:44.816 Refreshing due to a 401 (attempt 1/2)
03:58:55.781 Refreshing due to a 401 (attempt 1/2)
03:58:56.317 Refreshing due to a 401 (attempt 1/2)
Run Code Online (Sandbox Code Playgroud)
好像它是从内部serviceName记录的:"appengine.googleapis.com"
部署的应用程序从GCS读取一些文件,并使用google pubsub发布一些计算的指标.我使用谷歌客户端API库,它使用凭据进行身份验证.
credentials = GoogleCredentials.get_application_default()
if credentials.create_scoped_required():
credentials = credentials.create_scoped(['https://www.googleapis.com/auth/devstorage.read_only)
http = httplib2.Http()
credentials.authorize(http)
return discovery.build('storage', 'v1', http=http)
Run Code Online (Sandbox Code Playgroud)
pubsub的类似片段也是如此.有任何人遇到类似的问题,其中请求似乎永远停留在显示401状态代码的信息日志.不确定为什么请求不会超时并导致失败.任何变通方法?
google-app-engine google-authentication google-cloud-storage google-cloud-platform
我们有一个在美国和欧盟托管的应用程序。为了获得出色的性能,我们将在两个位置托管一个数据存储实例。
现在我们的问题是如何将数据从美国数据存储复制到欧盟数据存储?
或者从技术角度来看,我们将数据存储在哪里并不重要?