我正在寻找一些关于工作中我可能必须解决的问题的架构想法. 问题. 1)我们的Enterprise LDAP已成为一个"联系人",充满了多年的陈旧数据和未使用且未得到的属性. 2)管理层已决定LDAP将不再用作公司电话簿.它仅用于授权目的. 3)该公司拥有数百种不同来源的人的联系类型数据.我们需要从LDAP中擦洗所有垃圾,并为其他应用程序提供一个中心存储库,以存储有关一个人的所有数据. 理想目标 1)有一个来源存储一个人的所有属性 2)该公司可能有有关50万人的信息(读取500k行) 3)我估计这些人可能有500至1000个可选属性. (阅读500列) 4)数据将主要通过JMS设置/获取(此基础架构已经存在) 5)公司内的各个组可以"拥有"列.只有他们才能写信给他们的专栏,他们将负责保持数据清洁. 6)应在子秒内返回单个记录查找 7)系统应在高峰时每小时支持100万个请求. 8)主要目标是将实时数据提供给企业,报告是次要目标. 9)我们是Java,Ora
以下是关于 database-design 的编程技术问答
我想允许我的网站上的用户关注我网站上的其他用户和主题,但我不确定如何将两者结合起来.考虑Quora如何允许您关注用户,主题,问题,编辑等. 要关注用户,我将非常简单: user_id: int followers_id: int ,但这仅对用户有好处,所以我考虑了如何: user_id: int date: Date following: int(could be topic_id or user_id) following_type: text(topic or user) 我有点不确定这是这样做的最佳方法通过一个查询快速获取以下所有信息). 这是最好的方法,还是有更好的(更有效,可扩展等等)来实现这一目标?我应该将每种追随者类型分为不同的表格吗?我真的不确定应该考虑什么设计. 解决方案 显而易见的可能性是增殖链接表 - 每种可以连接的项目的组合一个. 但是,避免使用继承 1 可能更易于管理: (未显示各种跟随之间的关系之间的关系.)
在现实世界中的网络应用中,如何为多个客户/公司/客户存储数据? 假设我们有一个客户的以下集合: - users - tasks 我将如何将该系统限制在第二个客户端?有标准方法吗? 注意:我正在使用firestore(no-sql). 解决方案 我们为每个客户使用一组单独的集合.我们的数据结构对我们来说真的很好,看起来像这样... /clients/{clientId}/reportingData /clients/{clientId}/billingData /clients/{clientId}/privateData 使用安全规则,我们允许客户阅读他们的ReportingData和BillingData收藏,但不使用Privateata Collection. 但是,如果您需要同时查询多个客户端的数据(例如,用于内部用途),则弗兰克的选项1将在clientId字段中更好地工作. 我们与用户做同样的事情... /users/{u
您是否曾经注意到Facebook是如何说" 3个朋友和33个人喜欢的?"?我想知道最好的方法是什么.我认为浏览朋友列表,以及"喜欢这个"并进行比较的用户列表根本有效!他们在数据库中跟踪这一点吗?这将使数据库大小非常巨大. 你们怎么看? 谢谢! 解决方案 我猜他们会用他们的likes表外likes表,同时计算普通喜欢和朋友喜欢. 使用适当的索引,这根本不是一个慢的查询.巨大的数据库不一定慢,因此确实没有理由不将所有这些信息存储在数据库中.诀窍是确保索引和分区(如果有)设置得很好. 其他解决方案 Facebook使用 cassandra ,NOSQL数据库至少有一些事情.这是一些更详细的讨论,讨论了一些较大的社交媒体网站来解决这些问题: 09/10/buildingscalabledatabasesDenormalizationthenosqlmovementanddigg.aspx 如果您从中链接到DIGG博客文章等,其中有很多有趣的阅读. 其
我参与了我认为有关大规模应用的知识,大规模网络将对我有很大帮助.您认为我应该接受什么?我的意思是要读书,要参加的课程...等... 预先感谢您的任何建议. ps:我的意思是我的意思是不够大:D,用于> 100k用户的社交网络或5000 CCU的实时游戏.架构和设计,当您构建此类应用程序时要考虑的事情 解决方案 安全:/类别:owasp_top_ten_project 可伸缩性(db layer):这本书与任何数据库都非常相关) 可伸缩性(应用程序层): http://www.javaconcurrencyinpractice.com/与具有共享状态和线程的任何语言非常相关) 前端: http://wwwww.amazon.com/high-performance-web-sites-sential/dp/0596529309/和另外,为了掌握有时候的困难程度,您应该开始阅读这两个博客: http://engineering.twitter.twi
我们的应用程序包括在线商店以及其他功能,通常要求用户在完成销售之前注册,从而在此过程中创建唯一的customer_ID.当他们返回时,他们可以登录,并从数据库中检索他们的联系方式和交易历史记录. ,我们现在正在探索在"匿名"或"访客"客户的情况下该怎么做,向不想注册的客户开放在线商店,也可以在后端申请中登录的销售获取客户的电子邮件,邮政地址等太耗时了.该解决方案在在线商店外也有应用程序. 多个公司使用相同的数据库,并且数据库是在a 将所有匿名客户存储在一个预定的customer_ID下transaction表: customer_ID = 0对于每个匿名用户,customer_ID > 0对于每个真实的用户 这是直接向上对应用程序进行的 ,但更多地涉及确定哪个客户属于哪个公司 数据库中的customer表中是否存在customer_ID = 0的详细信息? 如果在数据库中,可以做出哪些数据库级约束以确保它始终存在? 如果不在数据库中,则外键约束从transacti
是在运行时动态创建表,基于用户的交互作用,对于Web应用程序是好事还是坏事? (我说的是Java,但问题可能适用于更多). 解决方案 表通常对于用户与数据库的交互至关重要.因此,缺乏表是致命的. 从此开始,在运行时即时创建桌子是一个不好的做法,因为这意味着无法保证用户的体验.如果创建表语句失败,无论出于何种原因,用户都会填充. 因此,避免依靠表格创建表的业务流程是个好主意.通常有解决方法,除了在非常具体的情况下. 在一定程度上,这取决于该应用程序的RDBMS风味.例如,Oracle具有全球临时表的概念,该表几乎在所有情况下都可以消除动态表创建的呼吁.但是,即使没有这样的精美功能,通常也有一些方法:例如,在表格上添加用户名列,并在其顶部构建视图,其中包括USERNAME=USER上的子句过滤. . 基本上,就经过的时间和系统资源而言,DDL执行昂贵.它创造了交易复杂性.而且这是有风险的:如果失败,则用户将无法继续进行.因此,由于所有这些原因,都应避免.
对于Web应用程序数据库,从安全角度来看,仅,与仅SP的解决方案有关的参数是什么,而应用程序DB帐户无权表和视图,并且仅在sps? 如果某人拦截了应用DB帐户,则暴露于攻击的表面积要少于表和视图未暴露时.非SP解决方案(或不提供)哪些安全优势?我看到使用非SP解决方案有许多优势,但是暴露所有桌子让我有些担心. 这个问题通常是针对主要数据库供应商产品的,但特别是SQL Server 2008. 解决方案 从安全的角度来看,我看不到非SP方法比SP方法具有任何优势,因为: 您必须将权限直接授予基础表等. 使用Sproc,可以将所有实现的架构信息封装/隐藏(也可以加密SP) ) 其他解决方案 让我们采用一个需要真正安全的系统,例如您公司的会计系统.如果您使用PROCS并仅授予Procs访问权限,则用户除了Proc所做的事情以外的任何事情.这是一个内部控制,旨在确保系统的任何用户都无法掌握系统的业务规则.这就是阻止人们购买公司,然后批准自己打开欺诈之门的资金
tl; dr:如何实现(例如)github的 (例如) 已更新以尝试解决 @Philipxy的一些评论: 我计划实施类似于GitHub的权限模型: 用户 用户可以分组 用户可以在组织中 群体可以在组织中 将允许用户在资产,组或组织上进行C,R,U和D操作: 一个被允许的个人用户(C,R,U,D)操作 已获得这些权限的小组成员 已获得这些许可的组织成员 或该组属于具有权限的组织的组成员 阅读用户是因为资产/组/org可查看(可读)匿名用户(" public") 用户还应有一组权限可以说出自己是否可以在权限上执行C,R,U或D的任何一个(用户可以为另一个用户创建权限[C,R,U,D] ,一个组织或组织) 用户可以为其创建的任何资产,集团或组织设置权限,或者授予已允许设置权限的任何资产,集团或组织. 这些权限将控制谁可以对网站中的资产,组和组织进行创建,读,更新和删除(CRUD)操作. 我该如何建模? 显然我有这些模型: 资产
这个问题旨在用作主要网站使用的数据库及其配置列表,对于任何想将其网站扩展到Twitter,Facebook甚至Google的大小的人来说都是很好的参考. 请保持最低答案,并确保引用使用的任何来源. 编辑: 另外,请 BOLD Web站点名称和数据库都可以更轻松地进行扫描. 解决方案 facebook.com hive (Hadoop的数据仓库,支持桌子和一个SQL的变体称为HiveQl).用于"简单的摘要工作,商业智能和机器学习以及许多其他应用程序" 当前在带有Hive DataStore的单个群集中运行610(即将成为1000个)Hadoop节点. Hive和Cassandra均由Facebook开源. Facebook统计信息: 超过2亿活跃用户 每天至少有超过1亿用户登录一次 每天至少有超过3000万用户更新其状态 平均用户在网站上有120个朋友 来源: http://wiki.apache.org/hadoop/
我已经开发了PHP/Laravel的多租户SaaS应用程序,但最近我面临着在Django/Python开发一个应用程序.不过,我仍在学习Django,我真的很喜欢Django Rest框架(DRF).但是我很难找出下面的突出显示区域,如果有人显示一些灯光,我将很好地走: 如何处理子域/域并选择合适的房客DB 如何管理和动态处理Django中的不同数据库 可以从Django Admin界面管理多租户应用程序后端 我将使用队列和其他应用程序捕捉技术,需要提示和技巧 那里的任何例子 通过Django开发SaaS时的任何挑战经验 解决方案 好... django-subdomains 在那里问题/9908186/django-switch-database-dynamcy``> people )在django中有关动态数据库的问题(包括,ahem ... 请查看 django-multitenant-schemas https://stackoverflow.co
我有一项任务是为数学学生开发一个问题及其解释.该网站将有大约20,000个问题.我需要一种有效的方法(易于存储,更快的查询和快速渲染)将这些问题存储在数据库. 样本问题 在板球比赛的前10场比赛中,运行率只有3.2.剩下的40次打球的运行率应该是多少才能达到282次跑步的目标? Required run rate = 282 - (3.2 x 10) = 250 = 6.25 ---------------- ----- 40 40 问题是一个简单的字符串,可以轻松存储.但是真正的问题是将这些表达式存储在括号中并分为数据库? 解决方案 您可以将表达式存储在乳胶中. 编辑: 您可以使用 http://www.mathjax.org/进行客户端 - 仪式等式. 其
我在某人创建的MySQL中有一个数据库.我没有数据库的任何文档. 我怎么知道表之间的关系? 是否有任何查询或程序来生成报告,以便很容易找到关系? 我可以查看模式信息并手动弄清楚,但是如果我可以生成关系报告,那就太好了. 解决方案 更好的方法是从编程性讲话中从INFORMATION_SCHEMA.KEY_COLUMN_USAGE表收集数据,如下所示: SELECT `TABLE_SCHEMA`, -- Foreign key schema `TABLE_NAME`, -- Foreign key table `COLUMN_NAME`, -- Foreign key column `REFERENCED_TABLE_SCHEMA`, -- Origin key
我正处于设计网站的中间,当时数据库图文件夹突然从数据库资源管理器中消失了.我不知道发生了什么和现在该怎么做,因为我迫切需要它继续我的工作 - 手动将表添加到数据库中不是我的选择. 我一直在寻找解决方案,甚至重新安装了Visual Studio和Local IIS服务器,但它根本没有帮助. 有什么方法可以将功能带回去,或者至少有任何免费工具可以在Windows 8 x64上使用,并且具有基于图的数据库设计器,用于MSSQL 2008? 编辑 Microsoft似乎是出于目的删除了图表.业务逻辑中哪个非常合乎逻辑 - 如果有人在Visual Studio内置了基本工具(图表),为什么有人会购买服务器管理工作室? 解决方案 1)数据库图是SQL Server,而不是Visual Studio的功能.我不确定VS用于显示该文件夹的内容,但您可能需要使用DBA验证或检查数据库的配置,以查看某人不只是禁用使用图表的能力.您是否也尝试过将连接刷新到数据库服务器?
我正在尝试创建一个工作应用程序.该应用程序将在内部使用,应该允许我们为产品SKU分配一些条形码编号.我正在使用Visual Studio/Basic 2010 Express来构建这一点,因为我非常有限的初学者经验是在VS 2010 Express. 我将提供一些有关我如何看待此应用程序工作的信息,然后我将继续我的实际问题: 我看到该应用程序允许我们通过输入SKU和产品描述的用户在数据库中创建一个新产品,然后该应用将分配该产品的下一个条形码,并从那里从那里分配该产品(如果需要)生成正确的EAN13和GTIN14条形码并将其存储在该SKU上. 作为一家公司,我们可以使用大量的条形码编号,并且我们已经将这范围划分了,以便前50,000个(例如)适用于我们的EAN13代码,下一个50K是我们的GTIN14代码纸箱和剩余的50k用于主纸箱. 因此,为了实现此目的,我有我的产品表,其中包含" sku","描述"和" bar码头"字段.我已经设法将Bar代码键字段设置为唯一,
为什么当我想在MySQL数据库中打开表格的设计视图时,每次抛出错误 我可以查看数据,编辑数据,管理数据,但无法编辑表定义.我使用Visual Studio 2015 Community,Marriadb 10.1.9和MySQL用于Visual Studio 1.2.6. 解决方案 我能够通过卸载连接器6.9.9并安装6.9.8- https://downloads.mysql.com/archives/c-net/ 其他解决方案 您需要安装点网连接器. 其他解决方案 现在是2018年,只是以为我会把一个扔在那里.经过几个小时的随机变化,我使用别人的答案使它开始工作. 我实际上得到了开发下载,但仅处理: MySQL用于Visual Studios 2.0.5 连接器/net 6.9.8 Visual Studio 2017 兼容性参考: 连接器存档(最初由 Christopher Hustman ):
使用C#和Visual Studio和MySQL数据连接器将枚举存储在数据库中的最佳方法是什么. 我将创建一个具有100多个枚举的新项目,其中大多数必须存储在数据库中.为每个转换器创建转换器将是一个漫长的过程,因此我想知道Visual Studio或某人是否有任何我没有听到的方法. 解决方案 [Required] public virtual int PhoneTypeId { get { return (int)this.PhoneType; } set { PhoneType = (PhoneTypes)value; } } [EnumDataType(typeof(PhoneTypes))] public PhoneTypes PhoneType { get; set; } p
有人知道一个好的(最好是开源和跨平台)工具以允许对MySQL数据库的简单可视化?我只需要一个可以快速指向数据库的工具,它将显示基本的表结构和字段类型等. 解决方案 mysql workbench 在Windows和Linux上运行.商业版将使您逆转工程师并编辑实时数据库的构成,而免费工程师则首先可以将结构倒入文件.它的祖先 dbdesigner 有点老,但没有这种限制. Windows和Linux也是如此. 如果这两个是过度的,则可以尝试使用 heidisql ,Mysqlfront的后代.它仅在Windows上运行,但是Java上有一个Alpha版本. 其他解决方案 我真的很喜欢如果您的要求是开源的,简单和跨平台,则Hav eyou考虑了使用 phpmyadmin ? 其他解决方案 mysql-administrator
是否有任何可视化预先存在的数据库模式的好工具?如果很重要,我正在使用mysql. 我目前正在使用MySQL Workbench处理SQL创建脚本转储,但是它笨拙,缓慢且手动过程可以拖动所有表格(如果不那么慢的话,这是可以的). 解决方案 我找到了 schemaspy 非常好 - 您必须每次更改脚本没什么大不了的. 正如评论中指出的那样,还有 gui gui /p> 另一个不错的工具是 schemacrawler . 其他解决方案 我通常使用schemaspy来做到这一点,但是最近我在 sqlfairy 只是使用转储文件创建结构图 其他解决方案 我喜欢此工具,称为 dbschema .它用Java编写,因此在OS X,Windows或Linux上运行.有点笨拙,尤其是在印刷方面,但是根据我的经验,它们都是这样的.这是我尝试过的几个中最好的.它使图表不错.免费试用.费用约为120美元,具体取决于您购买的许可证.