我们正在开发一个项目,该项目将包含某些操作(例如点击次数)的实时统计信息.每次点击,我们都会记录日期,年龄和性别(这些来自Facebook),位置等信息.
我们正在讨论存储这些信息的最佳位置,并将它们用于实时统计.我们将显示汇总统计信息:例如,点击次数,男性/女性点击次数,点击次数除以年龄组(例如18-24岁,24-30岁......).
由于我们在网站上使用的是MongoDB,我的同事认为我们也应该在其中存储统计信息.但是,我更喜欢基于SQL的数据库来完成这项任务,比如MySQL(或者可能是Drizzle),因为我认为在进行数据聚合等操作时,SQL会更好.虽然解析SQL的开销很大,但我认为MySQL/Drizzle实际上可能比No-SQL数据库更快.使用INSERT DELAYED查询时插入也不慢.
请注意,我们不需要执行JOINS或从多个表/集合中收集数据.因此,我们不关心数据库是否不同.但是,我们关心可扩展性和可靠性.我们正在构建一些(希望)变得非常大的东西,并且我们在设计每一行代码时都考虑了可伸缩性.
你怎么看待这件事?有没有理由比MySQL/Drizzle更喜欢MongoDB呢?还是无动于衷?如果你是我们,你会使用哪一个?
谢谢,亚历山德罗
我过去曾经使用过MySQL,但自从甲骨文收购Sun以来,我还没有触及它.既然Oracle已经开始在5.x分支上推出他们自己的MySQL更新了,我考虑了以下几点:
有Oracle分支以及两个流行的分支:Maria和Drizzle.我一直试图找到一个客观的比较,为什么我会考虑两个叉中的一个,而不是使用Oracle分支.我也一直试图弄清楚每个fork的主要支持者是什么,使它们与Oracle分支不同.
这些是我在搜索时想到的一些细节:
Drizzle的网站说,他们已经重新组织了代码,使其更加基于插件 - 这有什么好处?
玛丽亚的网站说他们已经做了一些改进,但我真的不明白他们有什么好处.
MariaDB是一个替代品 - 这非常棒,因为我不需要做任何重大改变.但是我想弄清楚为什么我会把玛丽亚放在普通的MySQL上.
Oracle的任何更新是否与仅使用常见SQL函数的公共开发人员相关?由于这是一个关系数据库问题,我假设我会使用JOIN.
我访问过的网站:
Drizzle:http://www.drizzle.org/
MariaDB:http://mariadb.org/
MySQL社区版:http://www.mysql.com/products/community/
Oracle新闻稿MySQL 5.6:http://www.oracle.com/us/corporate/press/1583744
MySQL已经不见了:http://zerolinesofcode.wordpress.com/2010/05/06/mysql-is-gone-here-comes- MariaDB的和-毛毛雨/
如果您要构建一个可能每天为1,000-10,000个用户提供4-5个数据表的Web应用程序 - 您会考虑哪些因素?
我知道选择数据库有不同的变量; 我明白我没有提到硬件; 我知道您可能认为NoSQL解决方案会更好,我可能会同意您的看法.但是,我很好奇从关系数据库的角度来看如何处理这个问题.
之前有没有人试过这些?
我很长一段时间以来一直是MySQL的用户.我想开始使用最流行的叉子之间的所有不同的变化.问题是我找不到它们之间的任何好的比较,我最终只会尝试所有这些.我关心的是生产,因为我不会在生产中试验所有这些叉子.
你有没有在生产中运行任何MySQL分支?
有什么好处?有什么缺点?
请检查编辑
我正在尝试在我的应用程序中实现sagas。
现在,我以一种非常糟糕的方式获取道具。我的应用程序主要基于轮询其他来源的数据。
目前,这是我的应用程序的工作方式:
我有具有mapStateToProps,mapDispatchToProps的容器。
const mapStateToProps = state => {
return {
someState: state.someReducer.someReducerAction,
};
};
const mapDispatchToProps = (dispatch) => {
return bindActionCreators({someAction, someOtherAction, ...}, dispatch)
};
const something = drizzleConnect(something, mapStateToProps, mapDispatchToProps);
export default something;
Run Code Online (Sandbox Code Playgroud)
然后,我有一些动作,像这样:
import * as someConstants from '../constants/someConstants';
export const someFunc = (someVal) => (dispatch) => {
someVal.methods.someMethod().call().then(res => {
dispatch({
type: someConstants.FETCH_SOMETHING,
payload: res
})
})
}
Run Code Online (Sandbox Code Playgroud)
和减速器,如下所示:
export default function someReducer(state = INITIAL_STATE, action) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Express 应用程序,它使用 Drizzle 作为连接到 Postgres 数据库的 ORM。当我推断特定模式的类型时,仅将声明的列添加为生成类型的属性。是否可以包含声明关系的类型?
以下是上述场景的代码:
import { relations, type InferModel } from "drizzle-orm"
import { integer, pgTable, primaryKey } from "drizzle-orm/pg-core"
import { privileges } from "@config/db/schema/privilege"
import { roles, type Role } from "@config/db/schema/role"
export const rolePrivileges = pgTable("role_privileges", {
roleId: integer("role_id").notNull().references(() => roles.id, { onDelete: "cascade" }),
privilege: privileges("privilege")
}, (rolePrivileges) => ({
pk: primaryKey(rolePrivileges.roleId, rolePrivileges.privilege)
}))
export const rolePrivilegesRelations = relations(rolePrivileges, ({ one }) => ({
role: one(roles, {
fields: [rolePrivileges.roleId],
references: [roles.id] …Run Code Online (Sandbox Code Playgroud) 我正在尝试启动 drizzle studio 但出现以下错误:
Error: There is not enough information to infer relation "restaurantsTable.categories"
我做错了什么?
模式.ts
export const restaurantsTable = pgTable("restaurants", {
id: serial("id").primaryKey(),
[...]
});
export const restaurantTableRelations = relations(restaurantsTable, ({ one, many }) => ({
menu: many(menuTable),
categories: many(categoryTable, { relationName: 'categories' }),
}));
export const categoryTable = pgTable("categories", {
id: serial("id").primaryKey(),
restaurant_id: integer('restaurant_id').notNull()
});
export const categoryTableRelations = relations(categoryTable, ({ one }) => ({
menu: one(menuTable, {
fields: [categoryTable.restaurant_id],
references: [menuTable.id],
relationName: 'menu'
})
}));
Run Code Online (Sandbox Code Playgroud) 我使用 Drizzle 作为 Typescript 后端,为一些 API 端点提供服务。我的数据库是 Postgresql,有一个 JSON 列。
export const transactions = pgTable("transactions", {
id: serial("id").primaryKey(),
my_json: json('my_json')
});
Run Code Online (Sandbox Code Playgroud)
我如果尝试从 supabase 表编辑器存储{"hello":"world"},这就是我得到的:
如果我尝试使用 TS/Drizzle 插入我的 {"hello":"world"} ,这就是我得到的:
不知怎的,我找不到设置或方法让 drizzle 将其存储为真正的 JSON 对象而不是它的字符串版本。
我\xe2\x80\x99m 在我的 TypeScript 项目中使用 Drizzle ORM 来处理数据库,并且我有一个表示用户数据的模型,其中包括密码等敏感信息。出于安全原因,我想默认在所有 SELECT 语句中排除 \xe2\x80\x98password\xe2\x80\x99 字段。
\ndrizzle ×8
mysql ×3
javascript ×2
mariadb ×2
orm ×2
postgresql ×2
typescript ×2
database ×1
json ×1
mongodb ×1
percona ×1
react-redux ×1
reactjs ×1
redux-thunk ×1
statistics ×1
sveltekit ×1