firestore文档没有深入讨论使用子集合与顶级集合所涉及的权衡,但确实指出它们不太灵活且不太"可扩展".鉴于您牺牲了在子集合中设置数据的灵活性,除了精神上令人满意的结构之外,必须有一些明确的优势.
例如,对于跨越大型集合的单个密钥,firestore查询的时间与从较小的集合中获取所有项目相比如何?
假设我们想要查询家庭单位中所有人的大型"人物"集合.或者,首先按系列将数据划分为族单位.
人 - >人:{family:'Smith'}
与
家庭 - >家庭:{姓名:'史密斯'} - >人 - >人
我希望后者更有效率,但这是正确的吗?每个人都有大的估计吗?子集合的任何其他优点(例如交易)?
Firestore文档详细介绍了如何手动计算文档的存储大小,但似乎没有为任何文档引用,快照或元数据提供此功能.
在我尝试使用自己的计算之前,有没有人知道这个官方或非官方的功能?
以下是我在(https://firebase.google.com/docs/firestore/storage-size上对文档的解释)对此类函数进行的首次剪切(完全未经测试)
function calcFirestoreDocSize(collectionName, docId, docObject) {
let docNameSize = encodedLength(collectionName) + 1 + 16
let docIdType = typeof(docId)
if(docIdType === 'string') {
docNameSize += encodedLength(docId) + 1
} else {
docNameSize += 8
}
let docSize = docNameSize + calcObjSize(docObject)
return docSize
}
function encodedLength(str) {
var len = str.length;
for (let i = str.length - 1; i >= 0; i--) {
var code = str.charCodeAt(i);
if (code > 0x7f && code <= 0x7ff) {
len++; …
Run Code Online (Sandbox Code Playgroud) 我一直在python中试验AST.我想通过在运行时转换AST来修改方法.
我可以使用预编译方法的源代码inspect.getsource()
,并且可以根据需要使用AST访问者修改AST.
这可能很天真,但我希望能够编译AST并做类似的事情:
myClass.method.__func__.__code__ = compile(newAST, '<string>', 'exec')
Run Code Online (Sandbox Code Playgroud)
但是compile只接受以ast.Module为根的AST.有没有办法只编译ast.FunctionDef,或从编译(和其他空)模块代码中检索功能代码对象?
任何指向信息的指针都会受到赞赏.我见过的AST例子只处理简单的表达式.
我意识到我只需要在命名空间中执行模块,然后我就可以访问正常的结构了.所以模式是:
src = inspect.getsource(myClass.myMethod)
astFromSrc = ast.parse(unindent(src)) # need to remove extra indent from method
transform(astFromSrc.body) # transform the AST as you need
ast.fix_missing_locations(astFromSrc) # fix up line numbers etc
compiled = compile(astFromSrc, '<string>', 'exec') # compile the module AST
####### From here is the part I was missing
myScope = {} # make an empty namespace
exec compiled in myScope # now myScope contains a proper compiled …
Run Code Online (Sandbox Code Playgroud) 在draftjs中,普通段落的块类型为unstyled
,尽管draftjs确实定义了paragraph
类型。同样,粘贴时,p或div标签的默认块类型未设置样式。
这种设计的原因是什么?有没有办法代替paragraph
普通段落用作默认块类型?
今天我在 OSX(Python 2.7 Homebrew,pip 7.1.2)上安装了 pylint。找不到 pylint 可执行文件。最后从 Github 复制文件,粘贴到 /usr/local/bin,并使其可执行,这似乎解决了问题。
我对 OSX 相当陌生,为什么 pip 不安装可执行文件?
我正在为一个有很多用户的 Web 应用程序评估 Couchdb。如果我使用每个用户的数据库模型,大概每个数据库中的设计文档都将是相同的。我没有发现任何提及作用于多个数据库的“全局”设计文档,或任何可以轻松更改所有用户数据库中的设计文档的工具。这是如何处理的?
要确保在共享设置中独占使用Cloud Firestore文档,是否足以在事务中读取,然后写入字段(例如"lockedBy")?
database locking transactions firebase google-cloud-firestore
calculation ×1
collections ×1
couchdb ×1
database ×1
document ×1
draftjs ×1
firebase ×1
installation ×1
locking ×1
macos ×1
methods ×1
pylint ×1
python ×1
size ×1
tradeoff ×1
transactions ×1