我是google-app-engine和google datastore(bigtable)的新手,我有些疑惑,这可能是设计所需数据模型的最佳方法.
我需要创建一个层次结构模型,类似于产品目录,每个域都有一些深层子域.目前,产品的结构变化小于读取要求.葡萄酒示例:
所有关系都是不相交和不完整的.此外,按照要求的顺序,我们可能需要存储每种葡萄酒的使用计数器(可能需要交易)
根据文档的顺序,似乎有不同的潜在解决方案:
但是为了获得葡萄酒的预期要求......有时候是按品种,有时是原产地,有时是酒庄...我担心使用这些结构的查询的行为(比如关系模型中的多个连接).如果你要求一个家庭的产品...你需要加入产品树的最后深度限定符,并加入自家庭以来)
也许最好创建一些重复的信息(按照谷歌团队的建议顺序:操作很昂贵,但存储不是,所以不应该看到重复的内容是主要问题)
其他类似问题的一些回答表明:
有什么建议?
嗨,威尔,
我们的情况更像是一种严格的分层方法,如第二个例子所示.并且查询用于检索产品列表,只检索一个不常见的.
我们需要从Origin,Winery或Variety中检索所有葡萄酒(如果我们认为该品种是严格分层树的另一个节点,仅仅是一个例子)
一种方法可能是包含路径属性,如您所述:
允许我从应用如下查询的各种葡萄酒中检索葡萄酒列表:
wines_query = Wine.all()
wines_query.filter('key_name >','/origin/toscana/winery/latoscana/variety/merlot/')
wines_query.filter('key_name <','/origin/toscana/winery/latoscana/variety/merlot/zzzzzzzz')
Run Code Online (Sandbox Code Playgroud)
或者来自Origin:
wines_query = Wine.all()
wines_query.filter('key_name >','/origin/toscana/')
wines_query.filter('key_name <','/origin/toscana/zzzzzz')
Run Code Online (Sandbox Code Playgroud)
谢谢!
尝试将Login控件设置为User控件,但当前上下文中是否不存在任何控件?我也尝试添加到显示相同错误的母版页.
我的下面的代码都没有被识别出来?请问这里发生了什么?我已多次重建该解决方案.
if (Membership.ValidateUser(this.UserName.Text, this.Password.Text))
{
FormsAuthentication.RedirectFromLoginPage(UserName.Text, RememberMe.Checked);
}
else
{
Msg.Text = "Login failed. Please check your user name and password and try again.";
}
Run Code Online (Sandbox Code Playgroud) Lucene的Query对象是可重用/无状态的吗?
如果没有,clone()荷兰国际集团一TermQuery比重建速度更快?
我想知道是否有人已经解决了这个问题.我有一个SpringMVC应用程序,我们正在添加对WebKit类型移动设备(基本上是iPhone和Android)的支持,所以我想知道有人找到了一种优雅的方式来定义特定视图,具体取决于发送请求的客户端.
我知道在Controller实现中的一个简单的if可以做到这一点,但我正在寻找更灵活/更优雅的东西(特定的ViewResolver实现,或者拦截器).
将非常感谢帮助...一如既往=)
这是一个非常古老的问题.您需要做的是使用Spring-Mobile以标准的优雅方式实现这一目标
我正在创建一个C#.Net Windows服务,我想知道你是否总是要调用base.OnStop();服务的OnStop()方法,为什么?
protected override void OnStop()
{
threadRunning = false;
this.ExitCode = 0;
base.OnStop();
}
Run Code Online (Sandbox Code Playgroud) 我想扫描用户上传到服务器端网站的文件.我更喜欢它是我们可以按需运行的东西,它不必一直在服务器上运行.Windows Server 2008 R2有哪些解决方案?你会推荐哪些产品?
virus windows-server-2008 windows-server-2008-r2 virus-scanning
给出了两个VSX项目的演示解决方案:1.添加新项目 - >可扩展性 - >项目模板 - "ItemTemplate1"2.添加新项目 - >可扩展性 - > VSIX项目 - "VSIXProject1"
我没有对"ItemTemplate1"进行任何更改,因此它构成了默认项模板(ItemTemplate1.vstemplate):
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>ItemTemplate1</Name>
<Description><No description available></Description>
<Icon>ItemTemplate1.ico</Icon>
<TemplateID>e298765c-97b8-4f4c-9b7b-a6b368f914df</TemplateID>
<ProjectType>CSharp</ProjectType>
<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
<NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
<DefaultName>Class.cs</DefaultName>
</TemplateData>
<TemplateContent>
<References>
<Reference>
<Assembly>System</Assembly>
</Reference>
</References>
<ProjectItem ReplaceParameters="true">Class.cs</ProjectItem>
</TemplateContent>
</VSTemplate>
Run Code Online (Sandbox Code Playgroud)
在VSIXProject1中,我只编辑了source.extension.vsixmanifest,添加了对ItemTemplates1项目的引用.在此之后,vsixmanifest只包含一个内容描述:
<Content>
<ItemTemplate>ItemTemplates</ItemTemplate>
</Content>
Run Code Online (Sandbox Code Playgroud)
然后建造它.在bin/debug中我得到了VSIXProject1.vsix,在其中我可以在ItemTemplates\CSharp\1033\ItemTemplate1.zip文件中看到我的项目模板.
一切看起来都很棒!
除了它不起作用的事实.我运行VSIXProject1.vsix,安装了vsix(我可以在扩展管理器中看到它),但没有任何模板被复制到"C:\ Users\{UserName}\Documents\Visual Studio 2010\Templates\ItemTemplates"!
我需要将Datetime字段转换为特定格式的INT类型.例如,我想
2000-01-01 00:00:00.000转换为20010101.
在查询中进行比较以进行比较的最高效方法是什么?
就像是:
DATEPART(year, orderdate) * 10000 + DATEPART(month, orderdate) * 100 +
DATEPART(day, orderdate)
Run Code Online (Sandbox Code Playgroud)
要么
cast(convert(char(8), orderdate, 112) as int)
Run Code Online (Sandbox Code Playgroud)
什么是最高效的方法?
我正在设置管理页面,以便我可以使用它来添加数据,在这种情况下是玩家.当你去尝试在admin.py中注册Players类时,你会得到问题标题中描述的错误(对象'players'没有属性'fields').通过views.py查看我从下面粘贴了一个片段,我看不出它可能指的是什么.
对不起,如果这是一个noob问题,我对django和python都很新.
class Players(models.Model):
player_id = models.IntegerField(primary_key=True)
firstname = models.CharField(max_length=50)
lastname = models.CharField(max_length=50)
team = models.ForeignKey(Teams)
Top200rank = models.IntegerField(null=True, blank=True)
position = models.CharField(max_length=25)
roster_status = models.ForeignKey(RosterStatus, null=True, blank=True)
class Meta:
ordering = ('lastname', 'firstname')
verbose_name_plural = 'Players'
def __unicode__(self):
return u"%s %s" % (self.firstname, self.last_name)
Run Code Online (Sandbox Code Playgroud) 我正在实现一个访问数据库的RESTful Web服务.对数据库中的实体进行版本控制以检测多个更新.例如,如果当前值是{"name":"Bill", "comment":"tinker", "version":3},如果一个用户PUT {"name":"Bill", "comment":"tailor", "version":3},请求将成功(200 OK)并且新值将是{"name":"Bill", "comment":"tailor", "version":4}.如果第二个用户PUT {"name":"Bill", "comment":"sailor", "version":3"}该请求将失败(409 Conflict),因为版本号不匹配.
存在非RESTful接口,因此无法更改数据库的设计.RESTful接口调用现有接口来处理检查版本的详细信息.
RESTful Web服务中的经验法则是尽可能遵循HTTP的详细信息.在这种情况下,在请求中使用条件头并且如果版本不匹配则返回412 Precondition Failed会更好吗?相应的标题似乎是If-Match.该头部采用ETag(实体标签),其可以是资源的当前状态的表示的散列.
如果我这样做,ETags将出于外表的缘故,因为版本仍然是我正在测试的真实的东西.
有什么理由我应该这样做,除了"让它更加RESTful",无论这意味着什么?