问题标签 [object-relational-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 我为 neo4j 做的 Python 对象映射是不是太天真了?
我正在寻找一些关于如何将应用程序代码重写为非幼稚的一般建议,或者是否放弃 neo4j 以使用另一种数据存储模型。这不仅是“主观的”,因为它与 Python 中 neo4j 驱动程序的具体、正确使用以及为什么它执行我的代码的方式密切相关。
背景:
我和我的团队一直在使用 neo4j 来存储最初存储在 Python 对象中的图形友好数据。最初,当地/内部专家建议我们使用 neo4j,因为它似乎符合我们的数据存储和操作/查询要求。数据始终是一组精心构建的本体的特定实例。例如(伪数据):
...等等,以创建一些相当复杂和冗长的层次结构。
对于原型设计,我们使用 RDFLib 将这些数据存储为语法三元组(主语->动词/谓词->宾语)的序列,并使用 RDFLib 的图形生成器构建图形。
现在,由于这些信息只是一个复杂的层次结构,我们只需将其存储在一些自定义 Python 对象中。我们这样做也是为了向需要与我们的核心服务交互的其他开发人员提供一个简单的 API。我们给他们一个 Python 库,它是我们的 Object 模型,让他们用数据填充它,或者,我们填充它并将它交给他们以便于阅读,他们用它做他们想做的事。
为了永久存储这些对象,并希望加速这些数据的写入和读取(查询/过滤),我们构建了自定义对象映射代码,该代码利用官方 neo4j python 驱动程序以递归方式写入和读取这些 Python 对象,以/来自neo4j 数据库。
问题:
对于大型和复杂的数据集(例如 15k+ 节点和 15k+ 关系),我们代码的对象关系映射 (ORM) 部分太慢,并且扩展性很差。但我和我的同事都不是数据库或 neo4j 方面的专家。我认为我们对如何完成这个 ORM 太天真了。我们开始怀疑使用 neo4j 是否有意义,而更传统的 ORM(例如 SQL Alchemy)可能只是更好的选择。
例如,我们现在拥有的 ORM 提交算法是一个递归函数,它可以像这样提交一个对象(伪代码):
这样做是不是很幼稚?像Py2neo 的 OGM这样的 OGM 库会更好,尽管我们是定制的吗?我已经看到推荐这个或那个 OGM 方法的这个和类似的问题,但是在这篇文章中,它说根本不要使用 OGM。
我们真的必须实现每一种方法和性能基准吗?似乎必须有一些最佳实践(除了使用批处理 IMPORT,这不适合我们的用例)。我们已经阅读了类似链接的文章,并看到了编写更好查询的各种技巧,但在尝试逐行优化代码之前,最好退后一步,更一般地检查案例。虽然很明显我们可以在一定程度上改进 ORM 算法。
使用像这样的递归策略向 Neo4j 写入和读取大而深的分层对象是否有意义?Cypher 中有什么东西,或者我们缺少的 neo4j 驱动程序吗?还是使用 Py2neo 的 OGM 之类的东西更好?最好完全放弃neo4j吗?neo4j 和 Cypher 的优势不容忽视,而且我们的数据似乎与图表非常吻合。谢谢。
sql - `Publisher(pub_name, pub_branch)` 中的 `Publisher()` 是什么?
从数据库系统概念中,对于对象关系数据库的 SQL 命令:
Publisher(pub_name, pub_branch)
里面是什么Publisher()
?
Publisher()
似乎不是Publisher
类型的构造方法,因为对构造方法的调用需要new
,例如new Publisher(’McGraw-Hill’, ’New York’)
.
我猜 PostgreSQL 可能有类似的命令,因为它很好地遵循 SQL 标准并且也是对象关系 DBMS。
谢谢。
php - 按聚合函数排序 Laravel Eloquent
您好我想知道是否可以使用 Laravel 的 Eloquent 通过聚合函数(MAX、MIN、COUNT)对查询结果进行分组/排序。这些型号是:
经典的一对多关系,我想执行下一个查询:
所以我想列出所有学生成绩最好的学校。Laravel Eloquent 呈现下一个查询:
所以他呈现MAX(student
为一列并引发 sql 错误,有没有办法在不使用 collections的情况下绕过它,这个想法是充分利用 DB。
sql - 如何在sql(oracle)中将元素添加到嵌套表中?
假设我正在使用一个表人员,并且人员可能有多个姓氏,因此该属性应该存储在嵌套表中(而不是存储姓氏的位置),这是一个用于创建姓氏类型的简单 sql,表 person 并在 oracle 的 sql developer (11G XE) 中添加示例行:
我知道如何一次更新所有姓氏,但我需要保留现有姓氏并添加其他姓氏,或者删除一个姓氏而不影响其他姓氏。简而言之,我希望我的代码像(我不熟悉 PL/SQL):
我知道它不能那样工作,我应该使用 PL/SQL 吗?,难道没有其他方法吗?
请原谅我的问题,并感谢您的回复。
sql - 如何在 sql (oracle) 中操作 VARRAYS?
假设我正在使用一个表人员,并且人员可能有多个姓氏,因此该属性应该是一个由 3 个元素组成的 varray(例如,它不是关于存储姓氏的位置),这是一个用于创建姓氏类型的简单 sql , 表 person 并在 oracle 的 sql developer (11G XE) 中添加示例行:
我知道如何一次更新所有姓氏,但我需要保留现有姓氏并添加其他姓氏,或者删除一个姓氏而不影响其他姓氏。简而言之,我希望我的代码像(我不熟悉 PL/SQL):
在这种情况下,我想获得第一个姓氏为“bilel”,第二个姓氏为“dani”的人
我知道它不是那样工作的,但我想知道这种情况下的 CRUD( create update delete ) 语句。并在 where 语句中使用 varray选择语句。
感谢您的答复。
sql - 如何在sql(oracle)中使用继承来操作对象?
假设我有那个层次结构,我该如何操作(添加、编辑)代理或客户端?
我已经尝试过这些,但没有奏效:
这是执行上面的sql时显示的错误:
错误 SQL:ORA-02315:默认构造函数的参数数量不正确
- 00000 - “默认构造函数的参数数量不正确”
*原因:为默认构造函数指定的参数数量与对象类型的属性数量不匹配。
*操作:为默认构造函数指定正确数量的参数并重试该操作。
我在做继承错误吗?
感谢您的答复
oracle - 在 Oracle 中创建嵌套表时出错
下面是我创建的表格。
创建嵌套表时出现以下错误。
ORA-02320:为嵌套表列 odetails_ntab 创建存储表失败 ORA-25175:未找到主键约束 02320。00000 -“为嵌套表列 %s 创建存储表失败” *原因:创建存储时出错table 为指定的嵌套表列。*行动:有关更多详细信息,请参阅随后的消息。如果他们描述的情况可以得到纠正,那就这样做;否则请联系 Oracle 支持。
在第 9 行得到错误 ORA-01401: 插入的值对于列来说太大
oracle - 在多级嵌套表中插入时如何修复“ORA-01401:插入的值对于列而言太大”
下面是表/对象类型创建查询。表创建成功
在嵌套表中插入数据时出现错误 ORA-01401:插入的值对于列而言太大。下面是插入查询
在第 9 行得到错误
ORA-01401: 插入的值对于列来说太大
database - 如何更新 oracle 数据库中的子类型属性值?
如何更新子类型的列值?
像这样的代码无法访问学生的成绩属性:
如何将学生成绩更改为“已毕业”?
sql - PostgreSQL 将新插入的行存储到变量中以供以后参考(SQL)
在 Cubrid 数据库服务器中,可以将新插入记录的“对象实例”引用存储到局部变量中,以便稍后在另一个语句中引用,如下所示:
这在 PostgreSQL 中是否可以在同一个会话中进行?如果是这样,可用变量的数量是否有限制?